document.body.appendChild导致IE已终止操作的问题
IE在文档未加载完成时调用document.body.appendChild就会出这个问题,即body标签还没有解析完毕并闭合时调用appendChild。解决方式很简单,改成insertBefore。代码如下:
if(document.body && document.body.firstChild){ var obj = document.createElement("xxx"); var node = document.body.firstChild; if (node) {node.parentNode.insertBefore(iframe, node);} else {document.body.appendChild(iframe);} }else{ setTimeout(arguments.callee, 5); }
这里还是使用了setTimeout每隔5ms循环调用,防止当该段代码被放置在head中被加载时,body对象还没有在dom中产生的情况。注意:arguments.callee已经deprecated了。
另外,延迟加载js代码,可以参考GA的方式(切记):
var ga = document.createElement('script'); ga.src = xxxxx; ga.setAttribute('async', 'true'); document.documentElement.firstChild.appendChild(ga);