【发布时间】:2017-08-04 03:29:52
【问题描述】:
HTML 拖放 API 定义了两个非常相似的事件,dragleave 和 dragexit,它们与 dragenter 一起旨在帮助跟踪当前放置目标。
快速搜索并没有找到关于这两个事件的任何当前和清晰的文档,什么时候应该使用另一个事件,以及浏览器支持,所以我想我会在这里问。
我将分享我目前找到的资源:
- HTML specification 详细描述了每个事件的触发时间,但需要进行一些解读。
- MDN 文档(HTML Drag and Drop API 和个人 dragexit/dragleave 页面)没有太大帮助,说 “当元素不再是拖动操作的直接选择目标时,会触发 dragexit 事件。” / “当拖动的元素或文本选择离开有效的放置目标时,会触发 dragleave 事件。” 并且没有提供有关浏览器对 dragexit 支持的信息(截至 2017 年 3 月)
- Dottoro's dragexit docs(Google 的另一个热门歌曲)似乎已经过时,声称“从 3.5 版开始,Firefox 中的 dragexit 事件已过时。请改用 ondragleave 事件。”
-
Mozilla's bug 619703 和 W3C bug 11568 引用了这两个事件的历史:
- 看起来 Gecko/Firefox 最初实现了
dragexit,而 IE 至少实现了dragleave,主要区别在于事件的顺序:dragexit在对应的dragenter之前触发,而dragleave,令人困惑的是,在之后触发. - HTML5 规范最初仅使用 IE 语义定义
dragleave,但后来(~2013 年)添加了带有 Mozilla 语义的dragexit。 - Gecko 似乎在 Firefox 3.5 (2009) 中实现了
dragleave,最初是dragexit的同义词,但后来(4.0,~2011?)对其进行了更改以符合规范。 -
caniuse 表示现代浏览器或多或少支持 HTML DnD API,但没有具体说明
dragexit
- 看起来 Gecko/Firefox 最初实现了
【问题讨论】:
标签: html drag-and-drop