2016-12-14 96 views
0

之间的JavaScript区分我有一个简单的程序,如:单击和双击

<div onclick="handleClick(event)" ondblclick="handleDoubleClick(event)"> 
    Hellooww world 
</div> 
<script> 
    var a = false 
    function handleClick(e) { 
    if(a) { 
     a = false 
      console.log("Hellooww", a) 
    }else{ 
     a = true 
     console.log("Hellooww", a) 
    } 
    } 

    function handleDoubleClick(e) { 
    console.log("world") 
    } 
</script> 

这里单点击设置的,以虚假的真实价值。但是,当其双击它perfomrs单点击并双击

如何,我只检查单单击和双击

+4

http://stackoverflow.com/questions/5497073/how-to-differentiate-single-click-event-and-double-click-event –

+0

这个答案很有趣(和相关):http:// stackoverflow。 com/a/1068302/218196。 –

回答

0

This thread提供为什么行为正在发生的细节,但这里是解决您的具体使用情况。一种可能的方法是使用timeout和一些等待时间。问题在于没有标准的间隔等待。虽然你可以使用300 ms正时a mobile browser uses区分tap之间double tap事件:

var a = false; 
var timeout; 
function handleClick(e) { 
    timeout = setTimeout(function() { 
     if (a) { 
      a = false 
      console.log("Hellooww", a) 
     } else { 
      a = true 
      console.log("Hellooww", a) 
     } 
    }, 300); 
} 

function handleDoubleClick(e) { 
    if (timeout) { 
     clearTimeout(timeout); 
    } 
    console.log("world") 
} 

但是总体来说,不注册单击并在相同的元素DBLCLICK事件:这是不可能正确区分单单击从事件单击导致发生dblclick事件的事件。

+1

你是如何到达300ms的? –

+0

@FelixKling,这是一个有效的问题:)。我记得在某个地方看到浏览器等待区分双击或其他点击事件的时间。这是不是真的? –

+0

我不知道,但有一个资源来支持这将是伟大的! –