javascript区分单击和双击
我有一个简单的程序,如:javascript区分单击和双击,javascript,dom-events,Javascript,Dom Events,我有一个简单的程序,如: <div onclick="handleClick(event)" ondblclick="handleDoubleClick(event)"> Hellooww world </div> <script> var a = false function handleClick(e) { if(a) { a = false console.log("Hellooww",
<div onclick="handleClick(event)" ondblclick="handleDoubleClick(event)">
Hellooww world
</div>
<script>
var a = false
function handleClick(e) {
if(a) {
a = false
console.log("Hellooww", a)
}else{
a = true
console.log("Hellooww", a)
}
}
function handleDoubleClick(e) {
console.log("world")
}
</script>
你好世界
var a=错误
函数handleClick(e){
如果(a){
a=错误
log(“Hellooww”,a)
}否则{
a=正确
log(“Hellooww”,a)
}
}
函数句柄双击(e){
console.log(“世界”)
}
单击此处,它会将a的值设置为true或false。。但当它双击时,它同时执行单点和双击
如何仅检查单击和双击提供了有关行为发生原因的详细信息,但以下是针对特定用例的解决方案。一种可能的方法是使用超时
和一些等待时间。问题是没有标准的等待时间间隔。虽然您可以使用300 ms
计时来区分点击
和双击
事件:
var a = false;
var timeout;
function handleClick(e) {
timeout = setTimeout(function () {
if (a) {
a = false
console.log("Hellooww", a)
} else {
a = true
console.log("Hellooww", a)
}
}, 300);
}
function handleDoubleClick(e) {
if (timeout) {
clearTimeout(timeout);
}
console.log("world")
}
但一般来说,不要在同一个元素上注册click和dblclick事件:无法正确区分导致dblclick事件的单击事件和单击事件。这个答案很有趣(也很相关):。你是如何达到300ms的?@FelixKling,这是一个有效的问题:)。我记得在某个地方读到过这样一篇文章,即浏览器等待区分双击或其他单击事件的时间。这不是真的吗?我不知道,但有一个资源来支持这将是伟大的@FelixKling,实际上,这个
300
ms到tap
和double tap
事件的间隔似乎不确定是否适用于click
和dblclick
。我会在我的回答中提到这一点。@Maximus这似乎是一个不错的方法,但在这里,当我双击它时,它会在控制台中记录世界,并且它会在最后执行handleClick
。。我不想在双击时执行handleClick