我使用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给出了// ***
指示的行号。
虽然还有其他许多问题,但似乎都没有解决这个问题。
答案 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);
你为什么在这里放一个分号?