document.body.appendChild()导致IE已终止操作的讨论

zhao_xuesong 2008-12-23 11:13:48
很多人都发现有些站点在访问的时候会出现不友好的提示

Internet Explorer 无法打开 Internet 站点*****
已终止操作


IE在文档未加载完成时调用document.body.appendChild大概就会出这个问题
IE只有页面完全读取结束body元素才会存在,所以在页面中插入上面这条语句在IE下就会出现错误

解决的办法也很简单,一种方法是把这条语句放入window.onload函数中执行,第二种方法是使用setTimeout来延时异步调用,还有一种方法是把这段语句放到</body>标签之后

但是通过一些实践,还是发现,以上3种方法都使用了的情况下,少数页面很大的站点,用IE打开还是不留情面的给了一个“无法打开站点”的提示。

请各位讨论下更好的解决方法是,无言不尽,谢谢
...全文
661 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
mengxj85 2008-12-26
  • 打赏
  • 举报
回复
学习
cloudgamer 2008-12-26
  • 打赏
  • 举报
回复
说的是insertAdjacentHTML 吧
这个ff才不支持
cloudgamer 2008-12-26
  • 打赏
  • 举报
回复
insertBefore ff不支持?
Robin.Xun 2008-12-25
  • 打赏
  • 举报
回复
我也碰到了这个问题
zhao_xuesong 2008-12-25
  • 打赏
  • 举报
回复
在IE里面初步发现用insertBefore还可以,不过FF和safari好像不支持这个,干脆,IE用insertBefore,其它浏览器用appendChild

然后bodyonload用这样
if(window.attachEvent)
window.attachEvent("onload",function() {});
else
window.addEventListener("load",function() {},true);

再次等候检验
ocean_958 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhao_xuesong 的帖子:]
很多人都发现有些站点在访问的时候会出现不友好的提示

Internet Explorer 无法打开 Internet 站点*****
已终止操作


IE在文档未加载完成时调用document.body.appendChild大概就会出这个问题
IE只有页面完全读取结束body元素才会存在,所以在页面中插入上面这条语句在IE下就会出现错误

解决的办法也很简单,一种方法是把这条语句放入window.onload函数中执行,第二种方法是使用setTimeout来延时异步调用,还有一种方法…
[/Quote]

这个三种方法基本上是可以解决的啊。主要是看IE中设置安全有关系的吧。。。
不知道对不对,没有测试过,仅供参考
zhao_xuesong 2008-12-24
  • 打赏
  • 举报
回复
感谢各位的发言,现在改成如下格式,等待实践的考证


document.body.onload = function(){
参数A=setInterval(函数A,200);};
}
function 函数A(){
if(document.body==null){return;};
clearInterval(参数A);
setTimeout("函数B()",200);
};

function 函数B(){
参数C=document.createElement("div");
…………
document.body.insertBefore(参数C);
…………
};
RJCHEN1985 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 chinmo 的回复:]
window.onload
用这个方法应该不会出现你说的情况
当然用insertBefore是一个不错的选择
[/Quote]
一般都会放在onload中做吧
herohk2002 2008-12-24
  • 打赏
  • 举报
回复
学习
cgisir 2008-12-24
  • 打赏
  • 举报
回复
同2楼
写到onload里就好了
jiang_jiajia10 2008-12-24
  • 打赏
  • 举报
回复
UP
  • 打赏
  • 举报
回复
window.onload
用这个方法应该不会出现你说的情况
当然用insertBefore是一个不错的选择
不悲不喜 2008-12-24
  • 打赏
  • 举报
回复
[Quote=引用楼主 zhao_xuesong 的帖子:]
很多人都发现有些站点在访问的时候会出现不友好的提示

Internet Explorer 无法打开 Internet 站点*****
已终止操作


IE在文档未加载完成时调用document.body.appendChild大概就会出这个问题
IE只有页面完全读取结束body元素才会存在,所以在页面中插入上面这条语句在IE下就会出现错误

解决的办法也很简单,一种方法是把这条语句放入window.onload函数中执行,第二种方法是使用setTimeout来延时异步调用,还有一种方法…
[/Quote]

在onload里面处理也会出现这样的问题吗?
有些奇怪。会不会是别的原因造成的?
cloudgamer 2008-12-23
  • 打赏
  • 举报
回复
用insertBefore好了
我这里也研究过一下

87,907

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧