javascript - 按下并释放鼠标按钮时会触发鼠标事件 "mousemove"

标签 javascript dom-events mouseevent mousemove mouseup

正如标题所说,我注意到在我的 Canvas 上,当按下/释放鼠标按钮时,即使我实际上没有移动鼠标,也会触发 mousemove 。问题是,在释放按钮的情况下,它会在 mouseup 之后被触发!

这是正常行为吗?
如何修复/解决方法?我确实需要我的 mouseup 最后触发,或者在释放按钮时 mousemove 根本不触发; setTimeout 不是一个合法的解决方案。

示例:https://jsfiddle.net/h40mm4mj/1/就这么简单:如果您打开控制台并单击 Canvas ,您会注意到 mousemovemouseup

之后记录
canvas.addEventListener("mousemove", function (e) {
  console.log("mousemove");
}, false);
canvas.addEventListener("mouseup", function (e) {
  console.log("mouseup");
}, false);

编辑:刚刚测试,它只发生在 Chromium、Windows 上。

最佳答案

我也遇到了同样的问题。解决比较先前鼠标位置与新鼠标位置的问题:

function onMouseDown (e) {
    mouseDown = { x: e.clientX, y: e.clientY };
    console.log("click");
}

function onMouseMove (e) {
    //To check that did mouse really move or not
    if ( e.clientX !== mouseDown.x || e.clientY !== mouseDown.y) {
        console.log("move");
    }
}

取自这里:What to do if "mousemove" and "click" events fire simultaneously?

关于javascript - 按下并释放鼠标按钮时会触发鼠标事件 "mousemove",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39961776/

相关文章:

Java MouseListener 在按下鼠标时禁用 MouseMotionListener

javascript - 更改添加到购物车的背景颜色

javascript - 如何在React的render()中导航到react-router-1.0.3中的组件之外?

java - 在Java中模拟点击JavaScript函数

javascript - 如何从 React js 中的 State 获取图表 js 饼图的数据?

javascript - 从 HTML 发送事件加变量到 JS 函数

java - 为什么我的 JPanel 在 JTable 内听不到鼠标变化?

dom - 如何将 CSS AnimationEnd 事件处理程序添加到 GWT 小部件?

javascript - URL 更改事件 - JavaScript

Java/Swing JViewport 鼠标拖动时跳转