IE6下A标签href和onclick同时存在时的问题
最近做一个项目(一个web页面上显示天气预报的功能),需要利用Ajax从服务器取回天气预报的数据。
做完以后,在我自己电脑上测试没有问题(IE7),也在FF2和FF3下测试通过。
上线以后,才有同事反应天气预报用不了,发现浏览器为IE6。立马用httpwatch看了一下数据,发现在IE6下点击请求的时候,返回的状态是aborted(也就请求被中断了)。啥原因……
后经google几翻搜索,终于找到原因:请求的链接是用的 A 标签,A上同时写了href和onclick事件。对于链接 A 标签而言,当用户鼠标单击的时候,A对象被触发时会首先去执行onclick部分,然后是href,如果是ie6的话,执行onclick,发出http请求(天气预报刚好需要异步请求数据)。瞬时又执行href,这时ie6就会abort前一个请求。
解决方法就是:直接把onclick事件写在href中:href="javascript:do()"
还有一种解决方案:<a href="javascript:void(0)" onclick="do();return false;">Test</a>
这样是忽略了href部分,这对于通过onclick传递this,或者无法避开a对象时都有用。
原文来自:http://www.cnblogs.com/phpliu/archive/2010/02/25/1673794.html