如何区分拖放中止

时间:2017-10-26 11:18:55

标签: javascript html5 drag-and-drop

当HTML5拖动操作在另一个窗口上结束时,在目标窗口中触发Drop事件,并在源窗口中的拖动元素上触发DragEnd事件。

对于复制和移动,放置目标将使用e.dataTransfer携带的数据执行复制操作,对于移动操作,必须在源窗口中删除该项目。

当事件在源窗口中触发时,DragEnd处理程序应该如何确定操作是以丢弃方式达到最终还是中止?

仅知道是否正在进行复制或切割操作是不够的;只有在目的地成功时,剪切操作才会从源中删除该项。如果你愿意,那就是交易。

1 个答案:

答案 0 :(得分:1)

我找到了answer in mdn。点击链接并向下滚动到完成拖动部分。遗憾的是,此信息既不在DragEnd也不在DataTransfer文档页面中。

  

拖动完成后,会在拖动源(与接收dragstart事件相同的元素)处触发dragend事件。此事件将触发[是否]拖动成功[或]取消。但是,您可以使用dropEffect属性来确定发生了什么丢弃操作。

     

如果在dragend期间dropEffect属性的值为none,则拖动被取消。否则,效果指定执行了哪个操作。在移动操作之后,源可以使用此信息从旧位置移除拖动的项目。

对句子结构和语法的强调和修复是我的。

Safari 8完全坏了。它总是报告“无”作为放置事件中的放置效果。