可能我的描述是乱了一些,具体现象描述请参看:http://zhidao.baidu.com/question/27580485.html,我感觉他苗描述得比较详细
我变成的过程中,采用Ajax框架,按钮A被点击时,根据后台数据值对A进行设定(是否为disable)。
正常状态下,无此现象,只有在IE中快速连续点击时,当A被设置成disable时才会发生此类现象
我出现此显现的原因是:按钮处于被按下的状态后人然可以被点击,执行onclick操作,
有人说这是IE的一个bug, 那么在javascript中能不能编写什么方法,保证在一次点击按钮后,保证该按钮被弹起后,才会被再次点击。

解决方案 »

  1.   

    难于找到环境重现你说的现象。根据你说的情况,说些思路供你参考吧。
    1、js不可能控制鼠标。原因是js不允许直接操作硬件。
    2、js可以模拟mouseup的效果。可以通过css实现,比如鼠标形状、button的突起等。
    3、核心问题是,你所说的现象是怎么产生的。很大的可能性是:A、正在处理onmousedown时,另一个onmousedown发生了,两个事件处理发生了冲突。解决方案是,在处理过程开始时,不再理会这些事件。  function mousedownHandle(evt){
          evt = evt || window.event;
          var target = evt.target || evt.srcElement;
          var oldClickHandle = target.onclick;
          var oldMouseupHandle = target.onmousup;
          var blankHandle = function(){return false;}
          target.onmousedown = target.onmouseup = target.onclick = blankHandle;
          //do your work here;
          target.onclick = oldClickHandle;
          target.onmouseup = oldMouseupHandle;
          target.onmousedown = mousedownHandle;
      }B、事件的冒泡。如果是因为这个原因,应该阻止冒泡。
      

  2.   

    我这里没有遇到你说的情况,如果 onmousedown 的时候 你disable,那么你再次的onmousedown 将无效,如果有效,可能是IE的bug了
      

  3.   

    还真的呀....这种bug都被你发先了,强.........
    只有这个窗口上去焦点后才能操作这个窗口.大家可以实验下,就按住按钮直到不能用,这个窗口没办法操作了.把this.onblur()加上使窗口失去焦点就可以了
    <HTML> 
      <HEAD> 
      <TITLE> New Document </TITLE> 
      </HEAD> 
      <BODY> <button onmousedown="Diabled()" id='btn'>Test</button> 
    <script>
    function Diabled(){setTimeout("Btn()",1000);}//1秒后执行
    function Btn()
    {
      document.getElementById('btn').disabled=true;
     // this.blur();//不注释掉这句窗口还真不能操作.
    }
    </script>
      </BODY> 
    </HTML>
      

  4.   

    改了下,加上this.focus()使获得焦点这样就不需要点任务栏使窗口获得焦点了,不过要闪一下
    <HTML> 
      <HEAD> 
      <TITLE> New Document </TITLE> 
      </HEAD> 
      <BODY> <button onmousedown="Diabled()" id='btn'>Test</button> 
    <script>
    function Diabled(){setTimeout("Btn()",100);}//1秒后执行
    function Btn()
    {
      document.getElementById('btn').disabled=true;
      this.blur();//注释掉这句窗口还真不能操作.失去焦点,这样获得焦点后可以操作
      this.focus();//重新获得焦点
    }
    </script>
      </BODY> 
    </HTML>