在IE6浏览器中,若使用A元素模拟按钮且未阻止默认行为,点击可能导致HTTP连接中断,进而影响图片等资源的加载。本文通过示例代码说明,在onclick事件中调用preventDefault()或返回false可解决此问题。
IE6中A元素按钮的资源加载问题
如果不采取额外措施,该问题似乎仅在IE6浏览器中出现。具体表现为:当尝试更改图片地址时,图片无法显示;或者在加载样式时,样式文件丢失。这种现象类似于资源下载被意外中断。正确的解释是,在IE6环境下使用A元素作为按钮时,务必在onclick事件处理器中调用preventDefault()方法。因为IE6会强制关闭当前活动的HTTP连接,这会导致其他正在请求的资源或脚本加载异常。不过,如果相关资源已经被缓存,则不会出现此类问题。
具体实现代码如下:
<!DOCTYPE HTML>
<html>
<head>
</head>
<body>
<h2>在ie6中会出现,点击改变图片src导致图片不出现,需preventDefault或者return false</h2>
<a id="J_btn" href="javascript:void(0)">点击改变图片地址</a>
<img id="J_img" height="160" src='http://www.baidu.com/img/baidu_sylogo1.gif' />
<script type="text/javascript">
var $ =function(id){return typeof (id) =="string"? document.getElementById(id) : null};
var logo_bd ='http://www.baidu.com/img/baidu_sylogo1.gif';
var logo_go ='http://www.google.com.hk/intl/zh-CN/images/logo_cn.png'
$("J_btn").onclick =function(event){
event = event || window.event;
//event.preventDefault ? event.preventDefault() : event.returnValue = false;
$("J_img").src = $("J_img").src == logo_bd ? logo_go : logo_bd;
}
</script>
</body>
</html>