![]() “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下面,而是添加到在这个元素之前已加载的某个元素里面,但这样往往会出现另一个问题,那就是当前新加的元素会受他父元素的css 的影响,这有时候又是我们不愿意看到的,那么另一个解决方法就是,直接把要加载的元素写在页面里面,而不要用js来添加,而且新加的元素也必须在放在js前面,否则就会找不到。 |
由【InternetExplorer无法打开Internet站点】引发的深思
最新推荐文章于 2025-04-06 18:00:05 发布