鼠标事件"mousemove"在按下和释放鼠标按钮时触发

Mouse event "mousemove" gets fired when pressing and releasing mouse buttons

本文关键字:鼠标 quot 按钮 释放 事件 mousemove      更新时间:2023-09-26

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

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

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

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

编辑:刚刚测试,它只发生在铬,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");
    }
}

摘自这里:如果"mousemove"answers";click"事件同时触发?