经常遇到莫名其妙让IE6崩溃的事情。今天看到了一篇好文章,数字生活整理整理发上来,以后开发的时候要注意了。
鉴于国内IE6的市场份额还在主流的情况,一定要避免出现以下情况。
IE6真脆弱啊
1.设置scrollbar-base-color,css里给table做了定位,再通过js改变其定位IE6就崩溃了。
关键代码:
<style type="text/css">
? html, body {
??? scrollbar-base-color: #330066;
}
.crash {
position:absolute;
left:200px;
top:200px;
width:200px;
}
</style>
?<script type="text/javascript">
??? function galgenfrist() {
??????? window.setTimeout('crashIE();',1000);
??? }
??? function crashIE() {
??????? var moveNode = document.getElementById("move");
??????? if(moveNode) {
??????????? moveNode.style.top = "100px";
??????????? moveNode.style.left = "200px";
??????? }
??? }
??? </script>
<body onload="galgenfrist();">
??? <div id="move" class="crash">
??? <table>
??????? <tbody>
??????? <tr>
??????? <td>
????????????? <textarea></textarea>
??????? </td>
??????? </tr>
??????? </tbody>
??? </table>
??? </div>
</body>
? html, body {
??? scrollbar-base-color: #330066;
}
.crash {
position:absolute;
left:200px;
top:200px;
width:200px;
}
</style>
?<script type="text/javascript">
??? function galgenfrist() {
??????? window.setTimeout('crashIE();',1000);
??? }
??? function crashIE() {
??????? var moveNode = document.getElementById("move");
??????? if(moveNode) {
??????????? moveNode.style.top = "100px";
??????????? moveNode.style.left = "200px";
??????? }
??? }
??? </script>
<body onload="galgenfrist();">
??? <div id="move" class="crash">
??? <table>
??????? <tbody>
??????? <tr>
??????? <td>
????????????? <textarea></textarea>
??????? </td>
??????? </tr>
??????? </tbody>
??? </table>
??? </div>
</body>
用IE6点击测试。
2.document.write
<script>for (x in document.write) { document.write(x);}</script>
在FF和Chrome中,都会打印出“prototype”字符,在IE6中立即崩溃。
用IE6点击测试。
3.在CSS中使用通配符*,在HTML的table标签中直接放置内容(而不是<tr>标签之类)
<style>*{position:relative}</style><table>aaabbbccc</table>
用IE6点击测试。
4.CSS中出现@+任意字符+/* 立即崩溃
<style>@;/*</style>
用IE6点击测试。
5.onload="window()"
<body onload="window()"></body>
用IE6点击测试。
注:原文中有6个导致崩溃的问题,我装的是IETester,有一个没有测出来。所以没写上来。