javascript - 如何让 mouseup 在任何地方都能触发?

标签 javascript drag-and-drop

我有一个比较实用的拖放脚本。但是,我希望能够在屏幕上的任何位置触发 mouseup。有没有办法在窗口外或当前元素外触发 mouseup?我知道这是可能的,我也看到过其他类似的问题。我想在 vanilla Javascript 中找到一种方法来检测这样的鼠标弹起。

document.onmousemove = mouseCoords;

var x = 0;
var y = 0;
var cl1= false;
var divid;
var offs1;
var offs2;
var topPos;
var leftPos;

function mouseCoords(e) {
    x = e.x
    y = e.y
    if(cl1 === true){
		document.getElementById(divid).style.top = topPos + (y-offs1) + 'px';
		document.getElementById(divid).style.left = leftPos + (x-offs2) + 'px';
	}
}
var drag = function(i, cas) {
	divid= i
	switch(cas){
		case 1:
			var rect = document.getElementById(divid).getBoundingClientRect();
			leftPos = rect.left;
			topPos = rect.top;
			offs1 = y;
			offs2 = x;
			cl1= true;
		break;
		case 0:
			offs1 = 0;
			offs2 = 0;
			cl1= false;
		break;
	}
}
#block{
  width: 100px; z-index: 20; height: 50px; background-color: blue; position: fixed; user-select: none; -webkit-user-select: none; 
}
.drag{
width: 200px; height: 100px; background-color: red; position: fixed;
}
<div id="block">mouseup doesn't trigger over me!</div>
<div id="1" class="drag" onmousedown="drag(1, 1)" onmouseup="drag(1, 0)"></div>

最佳答案

使用

document.addEventListener("mouseup", drag(null, 0)); 对于 mouseup,

和此代码用于 mousedown

document.addEventListener("mousedown", drag(null, 1));

基本上,document.addEventListener 适用于整个窗口。 "mouseup" 告诉脚本事件是一个 mouseup,最后一位是要执行的函数 (drag(1, 0))

关于javascript - 如何让 mouseup 在任何地方都能触发?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40454815/

相关文章:

Javascript/JQUERY - 确认 - true/false 响应

javascript - 使 Socket.io 路径与 NGiNX proxy_pass 一起使用

javascript - Angular Material Moment.js 格式化

database - 重新排序项目表的算法

android - 如何在 Android RelativeLayout 中拖放 View

javascript - JavaScript 对象与不同类型值(如字符串、对象和数组)的笛卡尔积

javascript - "this"的正确 JavaScript 使用

c# - UWP ListView/GridView DragItems 导致灾难性故障

HTML5 拖放仅适用于 Google Chrome

python - kivy on_dropfile 多重绑定(bind)