【随笔】近期前端开发中IE6的一些诡异神奇bugs

在这个万恶的IE6还生存的年代,我们很多时候都会遇到一些莫名其怪的诡异bugs,而这些很大部分都是来源与IE6。

 

1。神奇的cursor 

1 <href="#" onmouseover="this.style.cursor='pointer'" onmouseout='this.style.cursor="none";>测试</a>

 

 这段看起来很普通的代码,却蕴藏着一个bug,就是在IE6下,当鼠标离开时,a标签的样式cursor:url("none");同时会产生一个404的请求,其它浏览器,

一切正常。解决方案:cursor="default";就没事了。

 

2。神奇的a标签地址

1 <href="#" id="a">连接</a>
2 
3 <script>
4      document.getElementById("a").href="111@163.com";
5 </script>

 

当动态修改A标签的href的值,其值存在email的格式,IE6就会很智能的把innerHTML的值也改为href的值,其它浏览器一切正常。

解决方案:在email地址前加个空格就可以了。

 

3。神奇的a标签aborted

<a href="javascript:;" onclick="window.location.href='http://www.baidu.com'">我要跳转</a> 

 在IE6下点击此连接时,不会跳转,反而会返回一个aborted的状态。其它浏览器均正常。

解决方案:在最后return false;就可以了。 

 

4。奇怪的tr元素

var tr = document.createElement("tr");
alert(tr.cells.length);

 

 你会发现,在IE6先,是会报错的,cells未定义。在其它的浏览器,会弹出0;

如果你将tr元素添加进table中,则ie6也会弹出0;

 

5。奇怪的form与iframe

<form action="#" method="post" target="iframeform">
   
<input type="submit" value="submit" />
</form>
<iframe name="iframeform" display="none;"></iframe>

 

一个很正常的需求,就是希望提交表单后,不刷新页面。

问题就来了:form提交的地址是另外一边服务器的地址,就是域名都不同那种,而且我是不能修改那边代码,如果账号密码错误了,会返回一段js,

其中一句:history.go(-1);

如果我是直接输入本页面地址,是没有什么问题,但如果我是从搜索引擎或者其它页面连接过来的,密码一错,就跳回那个页面了。杯具。。。

 

后来知道原因:就是历史记录,所以iframe里面的src我就设置连接到一个小图标。但又出问题了,其它浏览器都可以,就是IE6提交不了。。。

又发现原因:图标的域名与当前域名不相当,IE6提交不了给它,所以,最终换成本域名的,问题就解决了。 

 

6。顺带提一个chrome的问题,当你定义一个全局变量:var status = {};

之后typeof status,在chrome下为string,在其它浏览器下为object。估计是跟window.status有关。 

 

暂时就这么多。。。 

posted @ 2010-12-11 16:32  Floyd  阅读(2635)  评论(9编辑  收藏  举报