scriptEval

使用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