【问题标题】:Create script tag in IE8在 IE8 中创建脚本标签
【发布时间】:2012-08-25 10:53:01
【问题描述】:

我在 IE8 中测试我们的网站,遇到了可怕的 Unexpected call to method or property access. 错误。

经过大量调试(IE8 的开发工具很烂),我发现了问题所在。

$('<script>').html(JSData).appendTo('head')

问题是$('&lt;script&gt;').html(JSData)。我尝试在控制台中运行它,但仍然出现错误。

为什么 IE8 不能在新创建的脚本标签上设置.html

附:这也失败了:

$(document.createElement('script')).html(JSData)

更新:我尝试在没有 jQuery 的情况下创建脚本标签:

var scriptTag = document.createElement('script');
scriptTag.type = 'text/javascript';
scriptTag.innerHTML = JSData;

scriptTag.innerHTML = JSData; 行,IE8 给出Unknown runtime error。感谢 IE8。

【问题讨论】:

  • 你试过用text代替html吗?
  • 似乎只使用eval() 脚本会更容易/更好。
  • @Pointy:我可以使用eval(或者更确切地说,jQuery 的$.globalEval),但我认为这可能“更快”。
  • 你试过$('&lt;SCRIPT DEFER&gt;')来避免IE中的security issue吗?
  • @adeneo: $('&lt;script defer&gt;').html(JSData) 仍然抛出 Unexpected call to method or property access. :-(

标签: javascript jquery internet-explorer-8


【解决方案1】:

您的仅 javascript 方法需要将脚本元素添加到文档中。

IE

var scriptTag = document.createElement('script');
scriptTag.text= JSData;
document.body.appendChild(scriptTag);

【讨论】:

  • 嗯,这似乎有效。好奇$('&lt;script&gt;').text(JSData) 没有。
  • @Rocket Hazmat:jQuery 的 .text() 设置 textContent 或 innerText 属性(不是 text 属性)。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-08
  • 1970-01-01
  • 2021-02-17
相关资源
最近更新 更多