一段让IE浏览器所有版本崩溃的简单HTML代码
许多人开发人员对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浏览器打开它,看看,它是不是已经失去响应崩溃了。

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

事实上,很早就有人发现过这个问题了,而且还有一个专门的网站(http://crashie8.com/,请谨慎传播此链接)。除了IE以外的浏览器打开那个页面都不会有任何问题,但是IE却莫名其妙地崩溃。
当然,如果你细心的话,会发现上面的HTML代码中<form>标签没有闭合。我们需要在<input>标签后使用</form>闭合标签才能让这段代码符合规范。规范的代码就不会让IE崩溃了,这样看来似乎并不是IE的错。
但是,当其他浏览器都能有很高的容错性时,IE没有,甚至到了IE9还是没有,这就是IE的悲剧了。
看来IE只是在支持标准方面改进还不够,需要对代码有更高的容错性。希望在IE9正式版发布之前,微软的开发人员功能看到这个问题。

当初很多用Frontpage做的网页都有很多不闭合的标签,造成ie以外的浏览器显示不正常,现在这算是自作自受吧。
浏览器当然可以拒绝运行错误的代码,可以显示 HTTP 500. 但如果别的浏览器可以“正常”显示的页面你的却不行,普通用户会怎么想?他们不会关心是网站的错还是浏览器的错,只会简单的扔下一句“土立土及浏览器”。博弈的结果一定是所有浏览器都会容错。至于 IE 的崩溃,不是容不容错的问题了,就是简单的 bug 吧。似乎只会在 不闭合时出现。
form标签没有结束标志,是IE浏览器不处理机制不好,但更多的是程序员的失误,不规范的事物根本没有必要去融合,不规范的事物就应该被秒出银河系,这也证明了很多三脚猫网页制作人员不负责任。而那些不崩掉的。把负担全交给了用户的电脑。自己想想。
看我的头像,我还是喜欢用chrome啊
IE的毛病实在是太多