近期所做的一个系统在使用的过程中,有用户在登录后导向首页的时候,ie浏览器报出“Internet Explorer无法打开xxx,已中止操作”的错误,在确定之后,页面显示”此程序无法显示网页“。奇怪的是,同样的页面,同一类型的用户,目前只发现一名用户出现了这种问题,感到非常茫然。
在查找资料之后,发现此错是由于IE浏览器的bug引起,该bug的产生情景是:子容器中的脚本区企图对父容器进行改变。这个改变包括:改变父容器的innerHTML;改变父容器的child。如以下两例所示:
<html>
<body>
<div>
<script type="text/Javascript">
document.body.innerHTML+="sample text";
</script>
</div>
</body>
</html>
<html>
<body>
<table>
<tr>
<td>
<script type="text/Javascript">
var d = document.createElement('div');
document.body.appendChild(d);
</script>
</td>
</tr>
</table>
</body>
</html>
解决这个问题的方法是:
1、将脚本直接放置在父容器之中。
2、脚本运行前,所操作的父容器元素已被关闭。
例1的解决方案:
<html>
<body>
<div>
</div>
<script type="text/Javascript">
document.body.innerHTML+="sample text";
</script>
</body>
</html>
<html>
<body>
<div id="targetContainer">
</div>
<div>
<script type="text/Javascript">
document.getElementById('targetContainer').innerHTML+="sample text";
</script>
</div>
</body>
</html>
例2的解决方案:
<html>
<body>
<table>
<tr>
<td>
</td>
</tr>
</table>
<script type="text/Javascript">
var d = document.createElement('div');
document.body.appendChild(d);
</script>
</body>
</html>
例子参考于微软网站:http://support.microsoft.com/kb/927917/en-us/#top