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);

 

posted @ 2012-12-08 01:14  我的白日梦  阅读(1440)  评论(2编辑  收藏  举报