4

我注意到有时 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>

浏览器比较(以 1/4 速度) 如您所见,在 IE 6-8 上大约需要单击两次按钮才能触发事件,而对于 9/firefox/chrome,事件每次都会触发.

这可能是什么原因?IE6 和 8 在装有 Windows XP 的虚拟机 (VirtualBox) 上进行了测试。

其他:

  • “提交”和“按钮”的结果相同。
  • 使用 'Onmouseup' 作为 onclick 的替代方法似乎可行。
4

1 回答 1

2

在旧版本的 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() };
}
于 2013-05-12T17:47:54.033 回答