双击事件不触发
Double click events not firing
JavaScript 中的双击事件存在一些问题。
我希望能够快速连续地单击一个元素,但要听双击。这在技术上是否可行,还是我需要单击一次并在单击两次时进行监听?
代码笔示例 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 中工作,因为这不是用于网站,而是用于游戏的叠加层。
像这样 (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();
}());
JavaScript 中的双击事件存在一些问题。
我希望能够快速连续地单击一个元素,但要听双击。这在技术上是否可行,还是我需要单击一次并在单击两次时进行监听?
代码笔示例 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 中工作,因为这不是用于网站,而是用于游戏的叠加层。
像这样 (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();
}());