2017-10-19 15 views
1

JavaScriptのダブルクリックイベントに関する問題があります。ダブルクリックイベントが発生しない

素早く連続して要素をクリックしたいが、ダブルクリックを聞きたい。これは技術的に可能ですか、それとも1回のクリックで2回クリックしたときに聞く必要がありますか?

codepenの例here

JSも以下で見つけることができます。

(function() { 

    var el; 
    var count = 0; 
    var counter; 

    function init() { 
    el = document.getElementById('click-me'); 
    counter = document.getElementById('counter'); 

    el.addEventListener('dblclick', onDblClick, false); 
    } 

    function onDblClick(e) { 
    count++; 
    counter.textContent = count; 
    } 

    init(); 

}()); 

何かをダブルクリックした後、あなたは、それがイベントをリセットできるようにするために、多分秒または0.5秒短い休止を残す必要があるようですか?

私はdblclickイベント自体に欠けているものがありますか、それとも私ができないことを試みているのでしょうか?

P.S.これはWebkit/Chromeでのみ動作する必要があります。これはウェブサイトではなくゲームのオーバーレイであるためです。このような

+0

私はあなたのcodepenをクリックして、激怒することができますし、それは細かいインクリメントし続けます。あなたの問題は、特定のブラウザ/デバイス/入力方法ですか? – Fenton

+0

@Fentonそれはうまくいくが、Chrome 61で動作する(ダブルクリック3回かかる)時々失敗する。 – Adriani6

+0

Edge、IE、Firefoxで動作するようだ。これはウェブサイト専用ではないため、Chrome/Webkitで動作するには本当に必要です。私は私の質問を更新します。 – ChronixPsyc

答えて

1

サムシング(https://gist.github.com/karbassi/639453):

(function() { 

    var el; 
    var count = 0; 
    var counter; 
    var clickCount = 0; 

    function init() { 
    el = document.getElementById('click-me'); 
    counter = document.getElementById('counter'); 

    el.addEventListener('click', onDblClick, false); 
    } 

    function onDblClick(e) { 

    clickCount++; 
    if (clickCount === 1) { 
     singleClickTimer = setTimeout(function() { 
      clickCount = 0;    
     }, 400); 
    } else if (clickCount === 2) { 
     count++; 
     clearTimeout(singleClickTimer); 
     clickCount = 0; 
     counter.textContent = count; 
    } 
} 
    init(); 

}()); 
+0

ありがとう!これが最善の解決策であるように見えます。 'dblclick'は私が使用しているWebkitエンジンでは一貫していないように見えます。 – ChronixPsyc

関連する問題