HTMLElement: drop event

The drop event is fired when an element or text selection is dropped on a valid drop target.

Bubbles Yes
Cancelable Yes
Default action Varies
Interface DragEvent
Event handler property ondrop

Examples

A minimal drag and drop example

In this example, we have a draggable element inside a container. Try grabbing the element, dragging it over the other container, and then releasing it.

We use three event handlers here:

  • in the dragstart event handler, we get a reference to the element that the user dragged
  • in the dragover event handler for the target container, we call event.preventDefault(), which enables it to receive drop events.
  • in the 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.

HTML

<div class="dropzone">
  <div id="draggable" draggable="true">
    This div is draggable
  </div>
</div>
<div class="dropzone" id="droptarget"></div>

CSS

body {
  /* Prevent the user 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("droptarget");
target.addEventListener("dragover", event => {
  // prevent default to allow drop
  event.preventDefault();
});

target.addEventListener("drop", event => {
  // prevent default action (open as 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

No specification found

No specification data found for api.HTMLElement.drop_event.
Check for problems with this page or contribute a missing spec_url to mdn/browser-compat-data. Also make sure the specification is included in w3c/browser-specs.

Browser compatibility

No compatibility data found for api.HTMLElement.drop_event.
Check for problems with this page or contribute missing data to mdn/browser-compat-data.

See also