大量个人网站和低质量网站代码的涌现造成对浏览标准的普遍不支持,如果正好碰上浏览器存在的一些bug,浏览器渲染引擎在处理这些网页代码的时候会出错,比如陷入死循环或直接崩溃等。
HTML代码导致网站崩溃
这是HTML结构错误而导致IE6的崩溃,在<col/>前或后添加任何字符均会导致IE6 Crash。
复制代码 代码如下:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head></head>
<body>
<table>
<tr>
<td>
<table>
<colgroup><col><col></colgroup>
</table>
</td>
</tr>
<table>
</body>
</html>
该代码来个韩国的一个,无论是使用XHTML或者HTML的什么版本,只要带了DOCTYPE声明,IE6就会立即崩溃,当不带DOCTYPE声明的时候就没有错误,原因可能跟文档类型声明有关。
令IE6崩溃的CSS代码
该代码参考自网站。该Bug发现与2007年,据说是一名日本人发现的:
复制代码 代码如下:
<style>*{position:relative}</style>
<table><input></table>
原因在于table中直接放置内容,在IE6会引起mshtml.dll模块损坏而关闭浏览器,非IE6则安全无恙。
除此之外,存在于IE6的Bug还有下面这种情况,当伪类为 a:active 时同样会遇到此问题:
复制代码 代码如下:
<style type="text/css">
a{position:relative;}
a:hover{float:left;}
</style>
<a href="">崩溃IE6 ,crash ie6</a>
解决方案:为 <a> 添加 zoom:1; 令其触发haslayout。
复制代码 代码如下:
<style type="text/css">
a{position:relative;zoom:1;}
a:hover{float:left;}
</style>
令IE7崩溃的CSS代码
此Bug来自偷米饭,它只存在IE7中据估计是处理省略字的时候导致IE7崩溃。
复制代码 代码如下:
<style type="text/css">
div{float:left;width:175px;}
ul{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;}
li{position:relative;}
</style>
<div>
<ul>
<li>崩溃崩溃崩溃崩溃崩溃crash ie7</li>
<li>崩溃崩溃崩溃崩溃崩溃crash ie7</li>
</ul>
</div>
解决方案:为 <li> 添加 zoom:1; 令其触发haslayout
令IE6崩溃的JavaScript代码
来自Internet Explorer Sucks,这个网站就是使用了一下代码,当你使用IE6访问的时候,浏览器将立刻崩溃。代码如下:
复制代码 代码如下:
<script>for (x in document.write) { document.write(x);}</script>
具体引起的原因暂时无法解析,但在兼容性和执行效率来看一般不会采取这样的写法。
3. 网页数据过多
网页含有大量需要处理的数据,造成系统繁忙,如多图页面,超长页面等,或者网页内嵌的各种控件会导致浏览器处理大量数据,造成系统繁忙。如Flash游戏,ActiveX控件等。当浏览器访问网站的时候,如果网站的数据量大,会使得浏览器一般在处理过程中会占用很大的CPU使用率和内存、造成浏览器失去响应,甚至会使电脑系统死机。在网站开发的时候,如果充分考虑Web性能,很大程度上能避免这个问题。
4. Ajax的Web服务漏洞
Ajax的是基于XML的异步传输,文本格式的XML消息可能是二进制数据带宽量的两倍之多。传输XML消息所需的带宽越多,系统或应用程序用来执行其他任务的可用资源就越少。例如执行复杂算法来获取期望结果。
过高的带宽可能导致由系统超载引起的性能减退。过高的带宽将导致Ajax应用程序输出破损的数据,因为没有足够的资源生成干净的数据。这意味着Web服务门户(Ajax应用程序属于其中的一部分)将把破损数据暴露给门户的其他部分,从而导致畸形消息和过度解析。如果威胁者利用了这个漏洞,则会引起浏览器崩溃。