Наличие некоторых проблем с событиями двойного щелчка в JavaScript.
Я хочу иметь возможность быстро нажимать на элемент, но слушать двойные щелчки. Является ли это технически возможным или мне нужно иметь один клик и слушать, когда его дважды щелкнули?
Codepen пример здесь.
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();
}());
Кажется, что после двойного нажатия на что-то вам нужно оставить небольшую паузу, чтобы она могла сбросить событие, может быть, секунду или полсекунды?
Есть ли что-то, что мне не хватает в самом событии dblclick, или это то, что я пытаюсь сделать невозможным?
PS Это нужно только для работы в Webkit/Chrome, поскольку это не для веб-сайта, а для наложения на игру.
Что-то вроде этого (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();
}());
dblclick
выглядит не очень согласованным в движке Webkit, который я использую.