首先讲下这个bug的出现的情况,页面中有<a href="JavaScript:void(0)" onclick="document.getElementById('current').src=
‘images/001.jpg’;“>这么一个a标签,onclick中的JS代码就是改变id为current的img标签的src属性,以达到动态切换图片的效
果。可是不幸的是:IE是动态改变的图片的路径,但是图片却不显示出来,得右键“显示图片”才能看到改变后的图片,不知是什
么原因,但据说是<a href="javascript:void(0)">或者<a href="#">这样使用a标签的话并不能阻止a标签最后触发一个什么行为,
导致ie6会错误的认为页面刷新或者重定向了,并且中断了当前所有连接,这样新图片的加载就被aborted了(不知真假),不管原
因是真是假,下面就先说下解决方案吧
简单的解决方法:
1、<a href="javascript:void(0)" onclick="document.getElementById('current').src=‘images/001.jpg’; return false;“
>;就是在代码后面加上return false;即可
2、把A换成SPAN等
问题代码
1 function getNewCaptcha(obj, ct){ 2 var oImg = obj.getElementsByTagName('img')[0]; 3 var capId = obj.getElementsByTagName('input')[0].value; 4 if(!capId){ 5 capId = genCapId(obj, ct); 6 } 7 if(capId){ 8 oImg.src = '/captcha?c=' + capId + '&r=' + Math.random(); 9 oImg.style.display = 'block'; 10 oImg.onerror = function(){ 11 imgError(oImg); 12 } 13 obj.onclick = function(){ 14 getNewCaptcha(obj); 15 return false; 16 } 17 }else{ 18 imgError(oImg); 19 } 20 }
15行为新加的return false,加上以后IE6就OK了