双击未触发的事件

时间:2017-10-19 15:26:29

标签: javascript event-listener double-click

在JavaScript中遇到双击事件的一些问题。

我希望能够快速连续点击一个元素但是要听双击。这在技术上是否可行,或者我需要单击一下并在两次点击时收听?

codepen示例here

JS也可以在下面找到。

(function() {

  var el;
  var count = 0;
  var counter;

  function init() {
    el = document.getElementById('click-me');
    counter = document.getElementById('counter');

    el.addEventListener('dblclick', onDblClick, false);
  }

  function onDblClick(e) {
    count++;
    counter.textContent = count;
  }

  init();

}());

似乎在双击某个东西之后,你需要留下一个短暂的停顿以允许它重置事件,可能是一秒或半秒?

dblclick事件本身是否缺少某些东西,或者我正在尝试不可能做到这一点?

P.S。这只需要在Webkit / Chrome中使用,因为这不适用于网站,而是游戏的叠加层。

1 个答案:

答案 0 :(得分:2)

像这样(https://gist.github.com/karbassi/639453):

(function() {

  var el;
  var count = 0;
  var counter;
  var clickCount = 0;

  function init() {
    el = document.getElementById('click-me');
    counter = document.getElementById('counter');

    el.addEventListener('click', onDblClick, false);
  }

  function onDblClick(e) {

    clickCount++;
    if (clickCount === 1) {
        singleClickTimer = setTimeout(function() {
            clickCount = 0;            
        }, 400);
    } else if (clickCount === 2) {
        count++;
        clearTimeout(singleClickTimer);
        clickCount = 0;
        counter.textContent = count;
    }
}
  init();

}());