这个 page 描述了一个拖放算法。
只看第一段代码(文章不断改进),它说我们在 document
中使用 document.addEventListener('mousemove', onMouseMove);
很重要。
这是因为如果我们使用 ball
,我们有可能将光标移动得太快,光标可能会在 mousemove
有机会再次执行之前离开球的盒子模型吗?我们不会将鼠标移到 ball
上,因此 mousemove
不会重新触发。
最佳答案
是的。
如果在拖动点也是对象的顶行像素时向上拖动对象,就会发生这种情况。
如果您从其中心拖动一个较大的对象,并且您的计算机有一个具有高轮询率和高显示刷新率的鼠标,并且浏览器能够快速处理操作系统提供的输入事件,则这种情况不太可能发生 - 所以如果您是使用高端游戏机(带有 1000Hz USB 鼠标和 120Hz+ 显示器)的前端开发人员,与在 30Hz 显示器上使用 100Hz 鼠标的人相比,可能不会注意到这个问题(这是一件事:很多人跑HDMI 1.x 上的 4K 显示器只能以 30Hz 的频率运行 4K)。
另一种情况是当用户使用绝对定位设备,例如绝对模式(Wacom 的“笔模式”)而不是相对模式(Wacom 的“鼠标模式”)的触摸屏或图形输入板时 -如果用户仅通过用手指轻敲目标位置(或通过在检测区域外垂直移动触控笔)将对象“拖动”到屏幕上的其他位置,则将只有 1 个 mousemove
事件不会被 ball
捕获根本。
关于javascript - 拖拽 'n' 丢弃算法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/64018823/