Nic*_*lay 11 html5 drag-and-drop
HTML Drag and Drop API定义了两个非常相似的事件,dragleave并且dragexit这些事件一起dragenter用于帮助跟踪当前的放置目标.
快速搜索没有发现任何当前和清晰的两个事件的文档,当一个应该使用另一个,以及浏览器支持,所以我想我会在这里问.
我将分享到目前为止我找到的资源:
dragexit而IE至少实现dragleave,主要区别在于事件的顺序:dragexit在相应之前触发dragenter,同时dragleave,令人困惑,之后触发.dragleave用IE语义定义,但后来(~2013)添加dragexit了Mozilla的语义.dragleave在Firefox 3.5(2009)中实现,最初是同义词dragexit,但后来(4.0,~2011?)将其更改为符合规范.dragexit具体说明Raj*_*ahu 29
我从MDN获取了代码示例,并在Chrome 57.0.2987.110和Firefox 52.0.2上运行.
Firefox事件序列是
- dragexit
- dragleave
- 下降
但Chrome从未发射过dragexit事件.
Chrome事件序列是
- dragleave
- 下降
关于dragexit事件的进一步分析,我在维基百科中发现它是Mozilla XUL事件的一部分,它说:
除了common/W3C事件之外,Mozilla还定义了一组仅适用于XUL元素的事件
如果你需要的代码片段,在这儿dragexit和dragleave从事件的片段plunkr.
document.addEventListener("dragexit", function(event) {
console.log(event.type);
// reset the transparency
event.target.style.opacity = "";
}, false);
document.addEventListener("dragleave", function(event) {
console.log(event.type);
// reset background of potential drop target when the draggable element leaves it
if (event.target.className == "dropzone") {
event.target.style.background = "";
}
}, false);
Run Code Online (Sandbox Code Playgroud)
有一个有趣的教程表明DnD API可以在不使用dragexit所有浏览器都不完全支持的事件的情况下完全实现.您可以安全地使用该dragleave事件,而所有主流浏览器都支持该事件.