"Internet Explorer无法打开internet站点XXX,已终止操作" 解决方法
近期在开发项目的时候使用的DWZ的J-UI开源页面框架,这个页面框架页面效果和操作方式都比较不错,但是在用的时候出现了一个问题,Internet Explorer无法打开internet站点××,已终止操作 。
在Firefox下测试正常,IE下却提示“无法打开Internet站点 已终止操作”的错误
当然不是我吐槽IE,IE确实不怎么的。。。也不是特别遵循HTML规范,导致各种各样的兼容性问题。最后苦了咱程序猿。。
然后在网上搜索,有很多解决办法 ,总体来说问题分下面几种情况:
用户端
由于用户浏览器的安全级别问题,
1. 自行修改IE自身的选项,比如说安全级别和浏览器加载项那些东西
2. 安装工具栏,比如Google工具栏、Baidu工具栏
3. 病毒及未知的篡改甚至IE本身的Bug导致的某些组件损坏
还有其他的如网络设置、DNS服务器、网络防火墙、HOSTS文件等问题。。。
这里就不一一列举了,以我们自身的情况来看:我们的开发人员,浏览器一般不会无缘无故的损坏,也不会突然之间多了些加载项,相信有过开发经验的人都会注意自己开发环境的干净,不会乱装一些杂乱的软件,也不会去修改浏览器的安全级别。
这些情况我们可以不考虑。那么剩下的,就是我们页面代码本身的问题了。
网上找了一下,终于找到了问题的根源,主要是因为浏览器在加载Javasrcipt的时候产生的错误,具体是由于我们在加载某些JS方法的时候HTML 的DOM结构并没有完全生成,这种情况很常见。如果DOM加载完之前用JS进行了增加删除节点的操作,例如appendChild,removeChild,innerHTML等。
很实际的说,DOM没有加载完成,那个元素都还没有生成,就用JS去调用那个元素的appendChild,removeChild,innerHTML相关方法,这样浏览器根本不能识别这个操作,从而导致了非法操作,报出了Internet Explorer无法打开internet站点××,已终止操作的错误。
解决办法:
尝试用这样的方法加载JS,
window.onload=function(){
...
}
这样就能保证页面元素都载入完毕再去执行JS操作。
还有一种:
if (document.readyState=="complete"){
....
}else{
setTimeout(里面写你原来要执行的方法,时间);//定时执行
}
当判断页面载入完毕再去执行。
如果是链接到外部JS文件可以这样做:
<Script language="JavaScript" src="jquery.js" defer="defer"></Script>
加上 defer="defer" 属性,页面加载完毕之后再执行该脚本,以避免找不到对象。
我是通过后面这个方法解决的,但如果加载很多JS文件,而且有些不能在所有元素都加载完再去执行,那么这样情况下只能自己一个个JS链接尝试加defer="defer",看可不可以,目前我只能找到这种方法解决,如果哪位童鞋还有更好的方法不妨一起共享共享吖~~ ~_~