document.body.appendChild引起的【InternetExplorer无法打开Internet站点】

“InternetExplorer无法打开Internet站点……已终止操作”是由document.body.appendChild引起的,document.body.appendChild本身来说这句代码是没有任何问题的,怪就怪在我加js的地方,因为页面在加载的时候就要执行js代码,所以我直接把js放在了页面里面,而且并没有放在window.onload的事件里。我不得不承认让js在window.onload的事件里执行非常保险,但是如果放在window.onload的事件里又会有另一个问题出现,那就是js加载过慢,甚至不加载,因为页面过大,或者有很多图片,flash等的时候,由于这些加载不成功就会导致页面永远执行不到window.onload事件,或者window.onload会很慢,那样就会影响整个页面的显示,这也是我们不愿看到的。为了更保险一点,又不至于加载过慢,我们会把js放在页面的最低端,事实上,就个人而言,我觉得是最好的解决方法。但是由于这个两个页面都是要及时显示,所以js就紧跟着页面标签的后面,所以就导致document.body.appendChild引发了InternetExplorer无法打开Internet站点的问题,因为js是解释执行的,当读到页面的某一行时,document.body并没有加载完成,或者说还正在加载,这个时候js向document.body添加一个子元素就会有冲突,继而导致了错误!

事实上,如果不是在页面加载时执行js,而是在触发某个按钮后执行js的话,是不会有这个错误的,所以平时如果js是由某个按钮触发的时候,我们的js代码放在页面的任何地方都可以。

解决方法也很多,首先我们可以把要添加的子元素不添加到body下面,而是添加到在这个元素之前已加载的某个元素里面,直接使用document.getElementById("channel_top").appendChild(newscript)即可,但这样往往会出现另一个问题,那就是当前新加的元素会受他父元素的css 的影响,这有时候又是我们不愿意看到的,那么另一个解决方法就是,直接把要加载的元素写在页面里面,而不要用js来添加,而且新加的元素也必须在放在js前面,否则就会找不到。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值