javascript - 为什么在没有发出双击时进入 dblclick 处理程序?

标签 javascript jquery html

我有JSFiddle带有可调整大小的框。双击文档上的任意位置时,框颜色会在米色和红色之间切换。

问题是,有时在调整框的大小后释放鼠标左键时,会生成 dblclick 事件并且框变为红色。有时您可以在不更改框颜色的情况下释放鼠标按钮,但是如果您只在框中单击一次,它会生成 dblclick 并更改框颜色。

通常,一切正常:我调整大小但没有 dblclick 条目。我必须尝试大约 20 次才能获得错误的 dblclick 事件。

我正在使用 Chrome。

我可以通过向 dblclick 处理程序添加代码以在调整大小正在进行时忽略该条目来部分解决该问题的特定实例。不过,这仍然没有修复 dblclick 条目,当我调整大小时,这种情况(很少)发生,没有 dblclick,但随后得到 dblclik 当我在框中单击一次时。

但不仅仅是让 JSFiddle 在这里工作,我在这里寻找的是生成此 dblclick 的原因。我是否错误地使用了 dblclick 事件?此事件是否存在已知错误,也许有更好的解决方案?鼠标按钮是否会发生某种开关弹跳?

$(function() {
    $("#box").resizable();
    $(document).dblclick(function(e){
        console.log("double-clicked on ",  e.target);
        $("#box").toggleClass("red");
    });
});

最佳答案

可能和你的硬件有关,我猜也受你系统的“双击延迟”设置的影响。

使用 Firefox 时,如果我反复点击并以小而近距离的 Action 拖动,我会触发 dblclick 事件,我会说这是正常行为。不过,我没有看到 dblclicks 以 5 秒间隔的点击突然冒出来。

为了帮助您跟踪错误的可能原因,请尝试同时记录 mousedownmouseup 事件:

$(document).mousedown(function(e){
    console.log("    mousedown on ",  e.target);
});
$(document).mouseup(function(e){
    console.log("    mouseup on ",  e.target);
});

fiddle

关于javascript - 为什么在没有发出双击时进入 dblclick 处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23511068/

相关文章:

javascript - javascript 中的 .call 是否将自身绑定(bind)到调用对象?

javascript - 通过样式属性值选择 JQuery 中的元素

javascript - jQuery 在页面底部滚动时加载更多内容

javascript - ng-include 包含在 ng-include 中,两者都绑定(bind)到不同的 Controller

html - 动态 img(或视频)标签根本不加载资源,HTTP 请求是 "pending"

javascript - "#"keyCode = 222 与 51(Chrome 与 Android 版 Chrome)- 为什么不同?

javascript - 除了字符 e、n、p 之外,是否有更简洁的正则表达式来匹配 a-z?

javascript - 在php中使用jquery ajax删除从另一个页面获取的结果

html - 如何在我的 Wordpress 网站上添加 flexbox

javascript - 在网页中显示 gif 图像的第一帧