在 mousedown 事件中添加的 Mousemove 事件在鼠标不移动时不断触发

Posted

技术标签:

【中文标题】在 mousedown 事件中添加的 Mousemove 事件在鼠标不移动时不断触发【英文标题】:Mousemove event added in mousedown event keeps firing while the mouse is not moving 【发布时间】:2021-09-19 08:04:21 【问题描述】:

我正在以“mousedown”->“mousemove”->“mouseup”的形式处理一系列简单的鼠标事件侦听器。我要做的是在mousedown 事件触发时为mousemovemouseup 添加两个事件侦听器。

我的代码如下所示:

document.addEventListener("mousedown",stagesContainerGrabMouseDownHandler)

function stagesContainerGrabMouseDownHandler(ev)
      document.addEventListener("mousemove",stagesContainerGrabMouseMoveHandler);
        document.addEventListener("mouseup",stagesContainerGrabMouseUpHandler)


function stagesContainerGrabMouseMoveHandler(ev)
        console.log(12)


function stagesContainerGrabMouseUpHandler(ev)
    document.removeEventListener("mousemove",stagesContainerGrabMouseMoveHandler);
    document.removeEventListener("mouseup",stagesContainerGrabMouseUpHandler);

问题是当我按住鼠标时,即使我的鼠标保持不动,mousemove 事件也会继续触发。我正在使用 Chrome。

【问题讨论】:

【参考方案1】:

看来问题一定来自其他地方——可能是其他代码或您正在使用的鼠标。

我测试了您在 DevTools 控制台中包含的代码(在 Edge 和 Chrome 中),当我按住鼠标不动时,事件不会触发。

【讨论】:

这是关于在按下鼠标时保持鼠标静止。 我澄清了我的帖子。我在按住鼠标不动的情况下进行了测试。如果我只是按下而不移动,控制台只会记录一次“12”。 奇怪。无论我使用什么浏览器,如果我按住文档上的任意位置,此代码都会导致 12 继续被控制台记录。 是的。即使在这里或 JSFiddle 我也遇到了这个奇怪的问题。【参考方案2】:

所以我找到了罪魁祸首。我什至没想到那里看。我正在使用 AutoHotKey 在后台运行脚本,出于某种原因,它似乎与我的页面交互。将其关闭即可解决问题。

【讨论】:

以上是关于在 mousedown 事件中添加的 Mousemove 事件在鼠标不移动时不断触发的主要内容,如果未能解决你的问题,请参考以下文章

在没有 jQuery mobile 的移动设备上使用 mousedown 事件?

如何在javascript中取消特定事件?

为 .NET TextBox 捕获 MouseDown 事件

在 Mousedown 事件上停止单击事件函数的问题

wpf中mousedown事件在执行几次拖动后,老出现方法不正确的情况,有解决方法的大侠给解决一下,谢谢

使用 MouseUp 和 MouseDown 事件或其他方式模拟单击的最佳方法是啥?