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

在东软工作的最后一天帮同事解决了一个问题,感觉很欣慰.
废话再多说,直接让代码来说明一切.
<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可能早就地球人都知道了,但是我确实是才发现的,那就见笑了.

你可能感兴趣的:(工作,IE,Firebug)