2016-12-14 3 views
0

Ich habe ein einfaches Programm wie:javascript zwischen Klick und Doppelklick unterscheiden

<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> 

hier auf einzelne klicken Sie den Wert eines Sets von unwahr auf wahr .. Aber wenn seine Doppelklick auf perfomrs es beide einzigen Klick und doppelklicken Sie auf

Wie kann ich nur für Klick und Doppelklick auf

+4

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

+0

Diese Antwort ist interessant (und relevant): http: // stackoverflow. com/a/1068302/218196. –

Antwort

0

This thread enthält Einzelheiten darüber, warum das Verhalten geschieht, aber hier ist die Lösung Ihrer spezifischen Anwendungsfall. Der eine mögliche Ansatz besteht darin, timeout und einige Wartezeit zu verwenden. Das Problem ist, dass kein Standardintervall warten muss. Obwohl Sie das 300 ms Timing verwenden könnten, dass a mobile browser uses zwischen tap und double tap Ereignis zu unterscheiden:

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") 
} 

Aber im Allgemeinen nicht registrieren klicken und dblclick Ereignisse auf demselben Elemente: es richtig mit einem Klick Ereignis zu unterscheiden unmöglich ist, aus Klicken Sie auf Ereignisse, die zu einem dblclick-Ereignis führen.

+1

Wie bist du zu den 300ms gekommen? –

+0

@FelixKling, das ist eine gültige Frage :). Ich erinnere mich, irgendwo gelesen zu haben, dass ein Browser darauf wartet, einen Doppelklick oder ein anderes Klickereignis zu unterscheiden. Ist das nicht wahr? –

+0

Ich weiß es nicht, aber eine Ressource zu haben, um das zu sichern, wäre großartig! –

Verwandte Themen