files/en-us/web/api/htmlelement/dragover_event/index.md
{{APIRef("HTML Drag and Drop API")}}
The dragover event is fired when an element or text selection is being dragged over a valid drop target (every few hundred milliseconds).
This event is cancelable and may bubble up to the {{domxref("Document")}} and {{domxref("Window")}} objects.
Use the event name in methods like {{domxref("EventTarget.addEventListener", "addEventListener()")}}, or set an event handler property.
addEventListener("dragover", (event) => { })
ondragover = (event) => { }
A {{domxref("DragEvent")}}. Inherits from {{domxref("Event")}}.
{{InheritanceDiagram("DragEvent")}}
In addition to the properties listed below, properties from the parent interface, {{domxref("Event")}}, are available.
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 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>
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;
}
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 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);
}
});
{{EmbedLiveSample('A minimal drag and drop example')}}
{{Specifications}}
{{Compat}}