正如标题所说,我注意到在我的 Canvas 上,当按下/释放鼠标按钮时,即使我实际上没有移动鼠标,也会触发 mousemove
。问题是,在释放按钮的情况下,它会在 mouseup
之后被触发!
这是正常行为吗?
如何修复/解决方法?我确实需要我的 mouseup
最后触发,或者在释放按钮时 mousemove
根本不触发; setTimeout
不是一个合法的解决方案。
示例:https://jsfiddle.net/h40mm4mj/1/就这么简单:如果您打开控制台并单击 Canvas ,您会注意到 mousemove
在 mouseup
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/