Javascript Onclick事件有时不会';t火灾(IE6/IE7/IE8)

Javascript Onclick事件有时不会';t火灾(IE6/IE7/IE8),javascript,internet-explorer,onclick,Javascript,Internet Explorer,Onclick,我注意到有时候IE6/IE7/IE8并不总是触发onclick事件(当点击按钮时)。 上次onclick事件触发后,似乎有几秒钟的宽限期 我决定使用以下代码测试此行为: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html> <head>

我注意到有时候IE6/IE7/IE8并不总是触发onclick事件(当点击按钮时)。 上次onclick事件触发后,似乎有几秒钟的宽限期

我决定使用以下代码测试此行为:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> 
    <html>
        <head>
            <meta http-equiv="Content-Type" content="text/html;charset=utf-8"/>
            <script type="text/javascript">
                window.onload = function(){
                    document.getElementById('clicker').onclick = function(){
                        var i = 0
                        return function(){
                            i+= 1
                            this.value = i.toString()
                        }
                    }()
                }
            </script>
        </head>
        <body>
        <input type="submit" value="click here" id="clicker"/>
    </body>
</html>

window.onload=函数(){
document.getElementById('clicker')。onclick=function(){
变量i=0
返回函数(){
i+=1
this.value=i.toString()
}
}()
}
正如您可能看到的,在IE6-8上,只需点击两次按钮即可启动事件,而对于9/firefox/chrome,每次都会启动事件

这可能是什么原因?IE6和IE8是在使用Windows XP的虚拟机(VirtualBox)上测试的

其他:

  • 我对“提交”和“按钮”都有相同的结果
  • 使用“Onmouseup”作为onclick的替代方案似乎是可行的

    • 在旧版本的IE中,您必须同时处理单击和双击

      如果你不这样做,只有你双击的第一次点击会被处理,给你这种错觉

      试试这个:

      window.onload = function() {
          var i = 0;
          document.getElementById('clicker')
              .onclick = function() { this.value = (i+=1).toString() };
          document.getElementById('clicker')
              .ondblclick = function() { this.value = (i+=1).toString() };
      }
      

      我不知道为什么,但也许你的doctype会成为一个问题?尝试使用HTML5 doctype:IE 6到8没有实现HTML5 API谢谢你帮我解决了这个问题。出于某种原因,Onmouseup似乎也能起作用。