W3C验证层叠样式表CSS http://jigsaw.w3.org/css-validator/ 地址
一篇文章用 Firefox 观看很正常,用 IE6 观看时, IE6 意外出现「MSHTML.DLL 执行错误,浏览器即将关闭」的错误讯息。后来我试了许多计算机,无一幸免, IE6 都会当掉。
我不是第一次碰到 IE 无端当掉的情形
(*1*1 IE7 真能良好支持 CSS 吗?)。我一向强调编辑网页时, HTML, HTML DOM, CSS 都要使用 W 3C 标准规范的内容,甚至连 JavaScript 也要用 ECMA-262 标准规范。但诡吊之处在于,尽管我使用的是标准语法, IE 仍然频繁地发生错误。我仔细追查了这次的问题的原因,查出原因竟然在于 CSS 。只需要用简单的 CSS 语法,就可以当掉 IE (*2*2 我只测过 IE6 ,没试过 IE5.5 及 IE7 )。当掉 IE 的网页内容列于下。
view plaincopy to clipboardprint?
- <html>
- <head>
- <meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
- <style type="text/css">
- a {
- text-decoration: none;
- border-bottom: 1px dotted #99ccff;
- }
- .main p:first-letter {
- font-size: 180%;
- float: left;
- /*padding-right: 4px;*/
- border: 2px dotted #99ccff;
- }
- </style>
- </head>
- <body>
- <div id="container">
- <div class="blog">
- <div class="blogbody">
- <div class="main">
- <p>
- <a href="http://www.microsoft.com/">当掉 IE6</a>
- 如果有人可以用 M$ IE6 开启这网页,麻烦跟我说一声 XD
- </p>
- </div>
- </div>
- </div>
- </div>
- </body>
- </html>
这个网页内容其实就是乐多网志的段落结构样板。而 CSS 的内容,只是设定让每篇部落格文章的每个段落的第一个字,以两倍大小突出,产生类似文绕图的效果。让 IE 当掉的内容重点在于:
- 嵌套的 CSS 宣告 .main p:first-letter,以及边框样式定义 border。margin 和 padding 也可以。
- a 标签 (连结) 的边框定义 border。
- 区块 (div class=main) 中的段落 (p 标签) 内容以 a 标签开始。亦即段落内容一开始就是一个连结。
只要凑齐这三个要件, IE 就会发生 mshtml.dll 执行错误而强制关闭的结果。我提过这种情形我不是第一次碰到,还有其它的 CSS 内容可以当掉 IE 。各位有兴趣可以试试 IE7 是否修正这些问题了。我不建议试用在别人的网站上,令别人的网站当掉不明不白。若将这种内容植入他人网页中,其恶意程度不亚于病毒,在 IE 仍然占 8 成使用率的情形下,令 IE 的使用者无法观看对方网页内容的行为,形同瘫痪对方网站。