论坛首页 Web前端技术论坛

在东软的最后一天,发现的一个IE6的bug

浏览 11167 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
   发表时间:2007-08-17  
在东软工作的最后一天帮同事解决了一个问题,感觉很欣慰.
废话再多说,直接让代码来说明一切.
<html>
 <head>
<script language="JavaScript">

function fireBug(buttonObj){

buttonObj.disabled=true;

}

</script>
 </head>

 <body>
   <input type="button" value="fire bug" onmouseup="fireBug(this)" >
   <br/>
<!-- 以下元素只是帮助判断页面假死状态 -->
  <select >
	<option value="111" selected>111</option>
	<option value="222">222</option>
  </select>
<br/>

<input type="text" value=""/>

 </body>
</html>



以上代码在IE6 下会让页面呈现假死状态.
想让IE脱离假死状态,只有让IE窗口失去焦点再获得.

这个BUG在IE7下已经修复.

在IE6下的解决方案有3种:
1 使用onclick代替onmouseup.
2 如果必须使用onmuseup,那么需要使用window.setTimeout来延后运行buttonObj.disabled=true;语句
3 在disabled=true之后执行个 window.blur()或者alert 或者  confirm或者window.open....总之执行一个让当前窗口失去焦点再获得的js语句.

不知道这个bug的标准的描述是怎样的,总之在一个完整的click事件发生之前,如果将事件的源弄成了disabled的,那么ie6就会有问题.

这个bug可能早就地球人都知道了,但是我确实是才发现的,那就见笑了.
   发表时间:2007-08-17  
不是我 我是13号发现的 呵呵
0 请登录后投票
   发表时间:2007-08-17  
这是ie的bug,但是这个代码的逻辑也不对。想要表达的意思是click之后disable这个Button,但是mouseup可能并不是一次click,比如在其他地方mousedown,然后移动到这个button上释放。
0 请登录后投票
   发表时间:2007-08-17  
hax说得对,比如在其他地方mousedown,然后移动到这个button上释放就不会出现假死现象了
0 请登录后投票
   发表时间:2007-08-20  
LZ最后一天还这么敬业,皮肤啊
0 请登录后投票
   发表时间:2007-09-06  
一个不错的bug。
0 请登录后投票
   发表时间:2007-09-06  
失去焦点后,再进去,就不会出现假死了.
0 请登录后投票
   发表时间:2007-09-07  
将焦点指向 buttonObj 以外的元素即可
例如 document.getElementById('elementId').focus();
0 请登录后投票
   发表时间:2008-06-26  
汗.... 看了好久你的文章...原来是以前是NEU的....同事啊.... 呵呵... 不过小弟依然在NEU受罪...
0 请登录后投票
   发表时间:2008-08-11  
日,原来你是NEU的~~晕啊!!
小弟也是啊!
0 请登录后投票
论坛首页 Web前端技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics