Javascript ie6/7脚本标记填充给出“;对方法或属性访问的意外调用“;
我使用AJAX获取脚本的内容,然后使用以下代码:Javascript ie6/7脚本标记填充给出“;对方法或属性访问的意外调用“;,javascript,internet-explorer,internet-explorer-7,internet-explorer-6,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填充的。这在IE9、Chrome和Firefox中运行良好。但是,在IE6和
var scr = document.createElement('script');
scr.appendChild(document.createTextNode(script)); // ***
document.getElementsByTagName('head')[0].appendChild(scr);
其中script
是从AJAX填充的。这在IE9、Chrome和Firefox中运行良好。但是,在IE6和IE7中,我得到一个错误:
对方法或属性访问的意外调用
IE给出了用/***
表示的行的编号
尽管还有很多其他的问题,但似乎没有一个能解决这个精确的问题。如果你已经有了字符串中的代码,为什么要用它做一个脚本标记呢?你就不能在上面调用
eval(script)
。这不会做同样的事情吗?document.getElementsByTagName('head')[0]**.appendChild(scr)
为什么在这里放分号?旧版IE不接受脚本元素(或样式和选项元素,但这是另外两个问题)中的子节点 您可以改为设置脚本元素的文本属性。 (scripttext是脚本文本的字符串。)
很好,这是一个简化代码的错误。因为如果我使用而不是eval,我可以在Chrome、Firefox和IE8+中获得更好的回溯。
var scr = document.createElement('script');
if(window.addEventListener)scr.appendChild(document.createTextNode(script))
else scr.text=scripttext;
document.getElementsByTagName('head')[0].appendChild(scr);