元素多次双击的速度有多快?

时间:2015-08-25 19:41:58

标签: javascript browser dom-events

如果一个元素被点击两次,那么' dblclick'事件被解雇了。如果继续单击该元素,则“< dblclick'事件不会继续被解雇。 ' dblclick'事件只会被解雇一次,直到" cooloff"期间完成,例如。有一段时间可以在另一个人之前等待' dblclick'无论单击元素多少次,都可以触发事件。

我找不到任何文件,指明在另一个< dblclick'之前必须经过多长时间。可以发生。有谁知道' dblclick' " cooloff"期间是?

我试图通过脚本点击一个元素来测试这个,但由于某些原因,javascript调用的点击不会触发' dblclick'事件。所以我已经手动测试了,在发生另一次双击之后,我无法在短时间内发生双击。您可以尝试自己:https://jsfiddle.net/5v4pcx2k/8/

code

如果您想知道,这基本上就是浏览器的效果https://jsfiddle.net/b0y5ej2y/3/

1 个答案:

答案 0 :(得分:0)

你的jsfiddle中存在很多错误和效率低下。

  • h1元素没有结束标记(您认为以/ hi结尾)
  • 你不需要jquery
  • 关于网络的一般建议,似乎是不要在同一元素上混合click和dblclick事件监听器
  • 该事件已经有一个属性告诉您何时触发,您不需要再次使用Date.now()
  • 询问当前时间

说了这么多,我仍然无法手动点击任何超过约700毫秒的速度。我认为发生的事情是窗口管理器/操作系统/鼠标驱动程序人为地阻止双击到某个速度限制。

这是我对dblclick速度的jsfiddle测试的版本,带有一个工作的程序化dblclick模拟,可以在我的计算机上每隔4ms快速地进行dblclick。

https://jsfiddle.net/stephencarmody/v0b3dpwc/

var lastOne;

foobar.addEventListener('dblclick', function (event) {
    log.innerText = 'elapsed: ' + (event.timeStamp  - lastOne);
    lastOne = event.timeStamp;
});

function simulateClick () {
    var event = new MouseEvent('dblclick', {
        'view': window,
        'bubbles': true,
        'cancelable': true
    });
    foobar.dispatchEvent(event);
}

setInterval(simulateClick, 0);

注释掉setInterval行以测试手动dblclick事件。