2016-12-14 94 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

我不知道,但有一個資源來支持這將是偉大的! –