如何在浏览器JavaScript中双击鼠标单击处理(单个)?

时间:2016-03-21 16:56:57

标签: javascript browser

如果用户 double 点击HTML按钮,则会在双击事件侦听器之前调用单个单击事件侦听器。

有没有办法在双击时跳过单击处理(不跳过篮球)?

请记住如果用户不点击双击,我希望能够对单击作出反应!

看看不言自明的sample at jsfiddle.net

myEventButton.addEventListener(
    'click',
    function(/*e*/)
    {
        myClickDiv.innerHTML = 'Clicked.'; // Gets here first on double click.
    });

myEventButton.addEventListener(
    'dblclick',
    function(/*e*/)
    {
        myDblClickDiv.innerHTML = 'Double clicked.'; // Gets here last on double click.
    });

1 个答案:

答案 0 :(得分:0)

这是a solution

我不知道是否有正确的方法,但这有效。我们的想法是在点击之间保持一个计时器,你禁止任何点击速度。这意味着双击时,第一次点击将被注册,但第二次点击过快,将被忽略。

当然你可以在一个很好的功能背后抽象出来,但你明白了。

您修改过的代码:

// Added variables to store timers
var minTimeBetweenClicks = 1000;
var lastClickTime = Date.now();

myClearButton.addEventListener(
    'click',
    function()
    {
        myClickDiv.innerHTML = '';
        myDblClickDiv.innerHTML = '';
    });

myEventButton.addEventListener(
    'click',
    function(/*e*/)
    {
      // Check the timer before doing anything
      if (Date.now() - lastClickTime > minTimeBetweenClicks) {
        myClickDiv.innerHTML += ' Clicked.';
        lastClickTime = Date.now();
      }
    });

myEventButton.addEventListener(
    'dblclick',
    function(/*e*/)
    {
        myDblClickDiv.innerHTML = 'Double clicked.';
    });

PS:我还修改了您的点击代码以添加"点击"按钮,这样你就可以看到双击没有添加两次。