将mouseup
事件绑定到window
对象通常会触发,即使在窗口外释放鼠标按钮(只要在窗口内按下鼠标按钮(也是如此。即使鼠标离开了窗口,这也非常有助于取消拖放(以及类似操作(。
window.addEventListener("mouseup", () => console.log("mouseup"));
但我遇到了一个问题,它不能在Chrome浏览器上用鼠标中键触发(91(在Mac操作系统(Catalina(上触发。
请注意,它在使用鼠标左键时工作良好,在同一台计算机上的Safari中工作良好(使用鼠标中键(,在Windows上的Chrome上工作良好。
这是Chrome for Mac中的一个错误吗?有变通办法吗?我正在制作一个需要使用鼠标中键平移的应用程序,所以即使我们在窗口外释放按钮,我也想取消它。
我刚刚发现两个月前就有人在Chromium漏洞跟踪器上报告了它,所以它似乎确实是一个Chrome漏洞:https://bugs.chromium.org/p/chromium/issues/detail?id=1206068
为了解决这个问题,我现在只需在mousemove
事件上检查e.buttons
,以便在鼠标未按下任何按钮的情况下返回窗口时取消拖动。不完美,但总比没有好。