一段让IE浏览器所有版本崩溃的简单HTML代码

添加评论 2010年10月30日

许多人开发人员对IE浏览器就比较的反感,这主要还是由于IE浏览器不同版本之间存在不同兼容性以及不支持网络标准的问题,当IE浏览器每推出一个版本,开发人员都要考虑代码对IE主流版本的兼容性。使得开发人员需要花费更多的时间在IE浏览器的兼容性上面。当然要解决这个问题并非一件易事,我们也看到微软正在朝这个方向做出努力,新版IE9浏览器已经对HTML5标准有了很好的支持。

当然IE浏览器的兼容性并非我们今天要讲的重点,这次是为大家介绍一个真正吓人的东西,用一段简单的HTML和CSS代码,既可以让任何版本的IE浏览器卡死。我们只需要简单地打开任意文本编辑器,将下面的代码复制进去,然后保存文件,例如SomeFilename.html。

<html><head>
<style type="text/css">
#a {
margin:0 10px 10px;
}

#b {
width:100%;
}

</style>
<title>IE Crasher</title>
</head>
<body>
<table><tr><td>
<div id="a">
<form id="b">
<input type="text" name="test"/>
</div>
</td><td width="1"></td></tr></table>
</body></html>

然后用IE浏览器打开它,看看,它是不是已经失去响应崩溃了。

IE浏览器失去响应

这个bug几乎存在于现在流行的所有IE版本,从IE6到刚刚发布的IE9的第6个平台预览版。在IE6中,该页面往往显示为空白,但是整个窗口都无法交互。在IE8中,崩溃来得很彻底。而IE9 Beta增强了坚固性,经过我的实测,这个页面又是会导致整个进程无响应,而有时IE9会提示你网页存在的问题,但是这都无法避免崩溃的现实。

IE9网站还原错误

事实上,很早就有人发现过这个问题了,而且还有一个专门的网站(http://crashie8.com/,请谨慎传播此链接)。除了IE以外的浏览器打开那个页面都不会有任何问题,但是IE却莫名其妙地崩溃。

当然,如果你细心的话,会发现上面的HTML代码中<form>标签没有闭合。我们需要在<input>标签后使用</form>闭合标签才能让这段代码符合规范。规范的代码就不会让IE崩溃了,这样看来似乎并不是IE的错。

但是,当其他浏览器都能有很高的容错性时,IE没有,甚至到了IE9还是没有,这就是IE的悲剧了。

看来IE只是在支持标准方面改进还不够,需要对代码有更高的容错性。希望在IE9正式版发布之前,微软的开发人员功能看到这个问题。

  1. 2010年10月30日 at 23:31 | #1
    xx

    当初很多用Frontpage做的网页都有很多不闭合的标签,造成ie以外的浏览器显示不正常,现在这算是自作自受吧。

  2. 2010年10月30日 at 23:45 | #2
    00000

    浏览器当然可以拒绝运行错误的代码,可以显示 HTTP 500. 但如果别的浏览器可以“正常”显示的页面你的却不行,普通用户会怎么想?他们不会关心是网站的错还是浏览器的错,只会简单的扔下一句“土立土及浏览器”。博弈的结果一定是所有浏览器都会容错。至于 IE 的崩溃,不是容不容错的问题了,就是简单的 bug 吧。似乎只会在 不闭合时出现。

  3. 2010年10月30日 at 23:51 | #3
    mpops

    form标签没有结束标志,是IE浏览器不处理机制不好,但更多的是程序员的失误,不规范的事物根本没有必要去融合,不规范的事物就应该被秒出银河系,这也证明了很多三脚猫网页制作人员不负责任。而那些不崩掉的。把负担全交给了用户的电脑。自己想想。

  4. 2010年10月31日 at 00:47 | #4

    看我的头像,我还是喜欢用chrome啊

  5. 2010年11月2日 at 12:35 | #5
    huomaw

    IE的毛病实在是太多

  1. 还没有 trackbacks
订阅评论