使用createElement动态插入行内脚本在各浏览器中的差异

牧云@^-^@ 提交于 2020-03-02 08:12:43

通常我们使用下面的方法来动态插入脚本:

<!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下终于可以正常运转,而且其他标准浏览器也都支持。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!