The HTML Drag and Drop API defines two very similar events, dragleave
and dragexit
, which along with dragenter
are intended to help track the current drop target.
A quick search didn't turn up any current and clear documentation of the two events, when one should be used over another, and the browser support, so I thought I'd ask here.
I'll share the resources I found so far:
dragexit
while IE at least implemented dragleave
, the major difference being the order of events: dragexit
fires before corresponding dragenter
, while dragleave
, confusingly, fires after.dragleave
with IE semantics, but later (~2013) added dragexit
with Mozilla's semantics.dragleave
in Firefox 3.5 (2009), originally synonymous with dragexit
, but later (4.0, ~2011?) changing it to match the spec.dragexit
specificallyI have taken code sample from MDN and ran it on Chrome 57.0.2987.110 and Firefox 52.0.2.
Firefox event sequence is
- dragexit
- dragleave
- drop
But Chrome never fired dragexit
event.
Chrome event sequence is
- dragleave
- drop
Further analysis on dragexit
event, I found out in Wikipedia that it's part of Mozilla XUL events which says:
In addition to the common/W3C events, Mozilla defined a set of events that work only with XUL elements
In case you need code snippets, here it is dragexit
and dragleave
event snippet from 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);
There is an interesting tutorial that shows that DnD API can be fully implemented without using the dragexit
event which is not fully supported by all browsers. Your safe bet is to use the dragleave
event instead that is well supported by all major browsers.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With