捕获浏览器/窗口外的鼠标up事件
Capture mouseup event outside of browser/window
现在我停止鼠标向上拖动事件,像这样:
$(document).mouseup(_onMouseUp);
但是,当鼠标离开浏览器窗口时,我需要捕获鼠标up事件,类似于Flash中的releaseOutside
。
这在JS中可能吗?
是的,可以在浏览器窗口外捕获鼠标启动事件。只需在mousedown回调中调用Element.setCapture()。
还记得在mouseup上调用document.releaseCapture()
elem.addEventListener('mousedown', function() {
...
elem.setCapture();
});
elem.addEventListener('mouseup', function() {
...
document.releaseCapture();
});
您无法在浏览器窗口外检测到鼠标up或鼠标down事件,但我认为您要做的是在用户单击浏览器窗口时取消拖放操作。你可以通过对浏览器窗口失去焦点做出反应来实现这一点,例如:
$(window).on("blur", function(e) {
// Cancel my drag and drop here
});
或
$(document).on("blur", function(e) {
// Cancel my drag and drop here
});
这包括你在浏览器窗口外点击鼠标,以及像Windows Alt+Tab任务切换。
您可以在浏览器窗口外捕获鼠标事件,在每个主要浏览器:Chrome, Edge和Firefox。
您只需要将侦听器附加到'window'对象上,如下所示:
window.addEventListener('mouseup',
() => console.log('mouse up captured outside the window'));
https://codepen.io/fredrikborgstrom/pen/vRBaZw
或者在使用jQuery的情况下,它将是:
$(window).mouseup(_onMouseUp);
可以像下面这样在浏览器窗口外捕获鼠标向上事件:
elem.addEventListener('mousedown', function(e) {
...
elem.setPointerCapture(e.pointerId);
});
elem.addEventListener('mouseup', function(e) {
...
elem.releasePointerCapture(e.pointerId);
});
引用:setPointerCapturereleasePointerCapture
相关文章:
- EaseJS拖放;放下(动画CC)电影剪辑的鼠标坐标
- 当鼠标悬停在文本中的单词上时显示警报
- JsFiddle上的鼠标事件不起作用
- 每当您在选择器内移动鼠标时,悬停功能就会重复
- 如何在鼠标悬停时在另一个图像上滑动图像.
- 鼠标悬停事件影响列表中所有行中的按钮,而不仅仅是特定按钮
- 将鼠标旋转限制为特定的度数
- 跟踪jqplot垂直折线图的鼠标位置
- node-webkit-从父窗口捕获iframe鼠标事件
- 悬停下拉菜单即使在鼠标移出后也保持活动状态
- Javascript-在视频中跟踪鼠标位置
- JQuery UI可拖动潜水与滚动棒到鼠标
- 如何防止鼠标up事件的单击事件
- 使用鼠标up事件触发表行中的按钮单击事件
- setInterval不能通过鼠标up清除
- 为什么单击事件不能通过停止鼠标down/鼠标up来停止?
- DOM中的新SVG元素,通过JavaScript添加,直到鼠标up才呈现
- 鼠标up功能阻止切换
- 捕获浏览器/窗口外的鼠标up事件
- 如何改变滑块的鼠标上下触发振荡器的音调,并在使用Javascript和Web音频API的鼠标up事件后保留状态