Baseline Widely available
The drop
event is fired when an element or text selection is dropped on a valid drop target. To ensure that the drop
event always fires as expected, you should always include a preventDefault()
call in the part of your code which handles the dragover
event.
This event is cancelable and may bubble up to the Document
and Window
objects.
Use the event name in methods like addEventListener()
, or set an event handler property.
addEventListener("drop", (event) => { })
ondrop = (event) => { }
Event type Event properties
In addition to the properties listed below, properties from the parent interface, Event
, are available.
DragEvent.dataTransfer
Read only
The data that is transferred during a drag-and-drop interaction.
In this example, we have a draggable element inside a container. Try grabbing the element, dragging it over the other container, and releasing it.
We use three event handlers here:
dragstart
event handler, we get a reference to the element that the user draggeddragover
event handler for the target container, we call event.preventDefault()
, which enables it to receive drop
events.drop
event handler for the drop zone, we handle moving the draggable element from the original container to the drop zone.For a more complete example of drag and drop, see the page for the drag
event.
<div class="dropzone">
<div id="draggable" draggable="true">This div is draggable</div>
</div>
<div class="dropzone" id="drop-target"></div>
CSS
body {
/* Prevent the user from selecting text in the example */
user-select: none;
}
#draggable {
text-align: center;
background: white;
}
.dropzone {
width: 200px;
height: 20px;
background: blueviolet;
margin: 10px;
padding: 10px;
}
JavaScript
let dragged = null;
const source = document.getElementById("draggable");
source.addEventListener("dragstart", (event) => {
// store a ref. on the dragged elem
dragged = event.target;
});
const target = document.getElementById("drop-target");
target.addEventListener("dragover", (event) => {
// prevent default to allow drop
event.preventDefault();
});
target.addEventListener("drop", (event) => {
// prevent default action (open as a link for some elements)
event.preventDefault();
// move dragged element to the selected drop target
if (event.target.className === "dropzone") {
dragged.parentNode.removeChild(dragged);
event.target.appendChild(dragged);
}
});
Result Specifications Browser compatibility See also
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4