2016-03-21 19 views
0

çift numaralı kullanıcı bir HTML düğmesini tıklatırsa, tekli tıklama olay dinleyicisi, çift tıklama etkinlik dinleyicisinden önce çağrılır.Nasıl çift tıklama tarayıcı fare tıklaması (tek) fare tıklaması nasıl engellenir?

Tek tıkla işlemeyi çift tıklatarak atlamanın bir yolu var mıdır?

Kullanıcının çift tıklama yapmaması durumunda tek tıklama ile yanıt vermek istediğimi unutmayın!

Kendi kendini açıklayıcı sample at jsfiddle.net'a bir bakın.

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

Okunduğum kadarıyla, bunu çözmenin bir yolu, tek tıklamayla bir * hafif * gecikme olayı eklemek ve bir dblclick = false 'bayrakına sahip olmaktır. Doubleclick olayı tetiklenirse, 'dblclick = true' öğesini ayarlayın ve tek tıklatma olayındaki kodun –

cevap

0

İşte a solution

bunu yapmanın uygun bir yol olup olmadığını bilmiyorum, ama bu çalışır. Fikir, tıklamalar arasında bir zamanlayıcı tutmaktır ve bundan daha hızlı olan tıklamaları yasaklarsınız. Bu, çift tıklama olduğunda ilk tıklamanın kaydedileceği, ancak ikincisinin çok hızlı olduğu göz ardı edileceği anlamına gelir.

Tabii ki bunu güzel bir işlevin arkasından soyutlayabilirsiniz, ama siz bu fikri anlayabilirsiniz.

değiştirilen kod:

// 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.'; 
    }); 

Not: çift tıkladığınız iki kez eklemez görebilirsiniz yüzden de eklemek düğmeye "tıklandığında" için Tıklama kodunu güncellenmiştir.

+0

çalışmasını engelleyin. Üzgünüz, ancak en azından jsfiddle tarayıcımda (Firefox) güvenilir şekilde çalışmıyor. Ama fikri anlıyorum, teşekkürler. – RhinoDevel

İlgili konular