【发布时间】:2016-02-11 09:02:20
【问题描述】:
我需要在浏览器窗口之间实现拖放 HTML 元素。
当一个元素从窗口 A 拖放到窗口 B 时,它必须从窗口 A 中移除(并添加到窗口 B)。
当取消拖放时(发生在用户按下“esc”键时,或者有时当拖放功能似乎出现错误时),元素必须回到原来的位置。
目前我正在做的是保留一个“hasBeenDropped”标志,该标志在 Dragstart 中设置为 false,在 drop 中设置为 true。在 dragend 中,我检查了我的标志,如果它没有设置为 true,则意味着 drop 已在另一个窗口中触发,或者操作已被取消。我需要区分这两种情况(放入另一个窗口与取消),以便采取相应的行动(例如删除窗口或将其替换到原来的位置)。
TL;DR:我需要能够检测原生 HTML5 拖放操作何时被取消(例如,当用户按下“esc”键时)。
有什么办法吗?
【问题讨论】:
-
运气好吗?我自己也遇到了这个。我有您保留用于跟踪成功丢弃的确切类型的内务标记,但我们的应用程序同样需要区分不同的取消模式。我试图仔细检查事件以寻找可以关闭的内容,但到目前为止,我只在 firefox 上遇到了运气。
-
抱歉,目前好像没有办法。从那以后我换了工作,所以我不再做这个了,但我没有设法让它按我的意愿工作。 IIRC 我所做的是复制而不是移动(这样做,原始窗口不需要放置事件)。
标签: html drag-and-drop detection cancellation