在IE下,当页面还没有加载完全时,如果正在执行的JS代码中含有使用了document.createElement()或者document.write()的话,很容易引起页面加载失败。导 致提示"internet explore 无法打开internet站点 http://www.xxx.com/xxx.html 已终止操作"。

这是因为在IE下,在加载文档的过程中,整个HTML文档的DOM结构尚未生成完整,而此时正在执行的JS就已创建出新的DOM结点了,致使DOM树的结构发生紊乱。 也就是说,HTML 网页正在被解析 ,脚本程序Javascript/VBsciprt 正在被执行, 脚本程序试图在HTML DOM树里未关闭的父/祖先节点添加/删除 一个元素。

解决办法:升级到IE8。http://support.microsoft.com/kb/927917/zh-cn
---------------
从编程作者的角度,避免的办法:在调用JavaScript时加上defer属性,使页面加载完毕之后再执行该脚本,以避免找不到对象的问题。示例如下所示:

<Script language="JavaScript" src="example.js" defer="defer"></Script>
但是在加入了defer属性的JS代码里不能包含document.write。defer 目前IE8已经不支持.

<script type="text/javascript">
document.write('<div id="loading">')
document.write('<img src="Images/loading.gif" />')
document.write('<br /><br />loading...')
document.write('</div>')

document.onreadystatechange=function(){
if(document.readyState=="complete"){
document.getElementById('loading').style.display='none';
document.getElementById('body').style.display='block';
}
}
</script>

<div id="body">
网页内容
</div>