通常我们使用下面的方法来动态插入脚本:
<!DOCTYPE html>
<head>
<script>
window.onload=function(){
var script=document.createElement('script');
script.type='text/javascript';
script.innerHTML='setTimeout(function(){alert("script eval")},1000);';
var head=document.getElementsByTagName('head')[0];
head.appendChild(script);
};
</script>
</head>
看上去似乎没有任何问题,因为innerHTML属性各个浏览器都能完美的支持。虽说innerHTML是IE首创,但在这里唯独IE运行此脚本会导致一个“未知的运行时错误”,也就是说IE不支持scriptEval(jQuery中使用$.support.scriptEval)。
结果一番斗争后,发现如下的解决方案:
<!DOCTYPE html>
<head>
<script>
window.onload=function(){
var script=document.createElement('script');
script.type='text/javascript';
//使用script.text代替script.innerHTML
script.text='setTimeout(function(){alert("script eval")},1000);';
var head=document.getElementsByTagName('head')[0];
head.appendChild(script);
};
</script>
</head>
这样修改之后,IE下终于可以正常运转,而且其他标准浏览器也都支持。
来源:oschina
链接:https://my.oschina.net/u/166661/blog/29781