按下按钮之间的 Internet Explorer 8 延迟

Internet Explorer 8 delay between pressing the button

需要快速按下一个按钮来为该值+1。

<html>
<head>
<script>
   var a = 2;
   function update() {
   document.getElementById('change').innerHTML = a;
   a++;}
</script>
</head>
<body>
<div id="change">1</div>
<input type="button" onclick="update()" value="TEST">
</body>

当我快速点击按钮时,有延迟。比如一个按钮被按下了十次,但是值为6.

在其他浏览器中一切正常。

也许问题是 Internet Explorer 的一个名为 "ondblclick" 的事件。

您可以尝试此问题的解决方案来删除该事件:

Remove OnDblClick Event on Item using jQuery

Internet Explorer 8 中肯定存在延迟问题。与 Oscar 在他的回答中所说的有些一致,dblclick 事件可能会占用一些点击次数。如果是这种情况,我们可以预期在此期间增加甚至可以消除问题。果然,这也是我们在处理该事件时发现的结果。

(function () {

    "use strict";

    var clicks = 0,
        result = document.getElementsByTagName( "label" )[0],
        button = document.getElementsByTagName( "button" )[0];

    if ( button.addEventListener ) {
        button.addEventListener( "click", increment );
    } else if ( button.attachEvent ) {
        button.attachEvent( "onclick", increment );
        button.attachEvent( "ondblclick", increment );
    }

    function increment () {
        result.innerHTML = ++clicks;
    }

}());

支持 addEventListener 方法的 IE 版本(Internet Explorer 9 及更高版本)似乎不存在此问题。因此,我们实际上只需要版本 8 及以下版本中的 double-binding。

Fiddle: http://jsfiddle.net/vapv60jw/1/