ie6 / 7脚本标记填充“意外调用方法或属性访问”

时间:2011-07-16 21:12:05

标签: javascript internet-explorer internet-explorer-7 internet-explorer-6

我使用AJAX来获取脚本的内容,然后使用以下代码:

    var scr = document.createElement('script');
    scr.appendChild(document.createTextNode(script)); // ***
    document.getElementsByTagName('head')[0].appendChild(scr);

其中script是从AJAX填充的astring。这适用于IE9,Chrome和Firefox。但是,在IE6和7中我收到错误:

  

意外调用方法或属性访问

IE给出了// ***指示的行号。

虽然还有其他许多问题,但似乎都没有解决这个问题。

3 个答案:

答案 0 :(得分:6)

较旧的IE不接受脚本元素中的子节点(或者在样式和选项元素中,但这是另外两个问题)。

您可以改为设置脚本元素的文本属性。 (scripttext是一串脚本文本。)

var scr = document.createElement('script');
if(window.addEventListener)scr.appendChild(document.createTextNode(script))
else scr.text=scripttext;
document.getElementsByTagName('head')[0].appendChild(scr);

答案 1 :(得分:1)

如果您已经在字符串中包含代码,为什么要从中创建脚本标记?你不能只打电话给eval(script)。这不会做同样的事情吗?

答案 2 :(得分:0)

document.getElementsByTagName( '头')[0]的 * * .appendChild(SCR);

你为什么在这里放一个分号?