在JavaScript和vuejs中有没有什么方法可以检测到一个dragevent离开容器?

cnh2zyt3  于 2023-10-23  发布在  Vue.js
关注(0)|答案(1)|浏览(153)

我目前正在用vuejs实现一个todo应用。todo应用程序必须具有拖放功能,允许用户在列表中的元素之前或之后拖动,并且应该在拖放时更新dom。我不能使用其他模块,如vue的可拖动或可排序的js。
目前,我的代码在vuejs模板中列出了带有v-for标签的todo项目,我使用纯JavaScript来检测拖动的项目应该放在哪里,并通过获取拖动的元素来更新dom,然后将其追加或插入到某个位置。
这只适用于dom,对于todo对象,我监听dragdrop事件,并做同样的事情。我计算了该项目应该放在todo列表对象中的什么位置,并删除了之前的位置。
但是,如果将项目拖到容器外,dom仍然会更新,而dragdrop事件永远不会触发,因此todo对象永远不会更新。
我试着在body和container上使用mouse move,但是在使用了drag API之后,mouse move似乎不能正常工作。
我也试过使用dragleave,但是这个事件甚至在我在容器中悬停在它的子元素上时也会触发。
我也试着只使用JavaScript,并不断地更新dragame上的todo对象。这在firefox中可以正常工作,但在Chrome中滞后太多。

nhhxz33t

nhhxz33t1#

解决了我使用dragEnd侦听器检查客户机x和y是否在使用getBoundingClientRect()的容器中。
如果客户端在容器之外,我使用todo对象找到div的原始位置,并将其插入到原始位置。

相关问题