在JavaScript中遇到双击事件的一些问题。
我希望能够快速连续点击一个元素但是要听双击。这在技术上是否可行,或者我需要单击一下并在两次点击时收听?
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();
}());
似乎在双击某个东西之后,你需要留下一个短暂的停顿以允许它重置事件,可能是一秒或半秒?
dblclick事件本身是否缺少某些东西,或者我正在尝试不可能做到这一点?
P.S。这只需要在Webkit / Chrome中使用,因为这不适用于网站,而是游戏的叠加层。
答案 0 :(得分:2)
像这样(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();
}());