ondragover Event

Definition and Usage

The ondragover event occurs when a draggable element or text selection is dragged to a valid drop target.

By default, data/elements cannot be deleted from other elements. To allow dropping, we must prevent the default handling of the element. This is achieved by calling the event.preventDefault() method of the ondragover event.

Drag-and-drop is a very common feature in HTML5. It is when you 'grab' an object and drag it to a different location. For more information, please read our HTML5 Drag and DropHTML tutorial.

Note:To make an element draggable, use the global HTML5 draggable attribute.

Tip:By default, links and images are draggable without the draggable attribute.

Many events are used at different stages of the drag-and-drop operation, and may occur:

Events triggered on the draggable target (source element):

  • ondragstart - Occurs when the user starts dragging the element
  • ondrag - Occurs when the element is dragged
  • ondragend - Occurs when the user finishes dragging the element

Events triggered on the drop target:

  • ondragenter - Occurs when the dragged element enters the target
  • ondragover - Occurs when the dragged element is on the target
  • ondragleave - Occurs when the dragged element leaves the target
  • ondrop - Occurs when the dragged element is placed on the target

Note:The ondragover event is triggered every 350 milliseconds when dragging an element.

Example

Execute JavaScript when the element is dropped on the target:

<div ondragover="myFunction(event)"></div>

Try It Yourself

More TIY examples are available at the bottom of the page.

Syntax

In HTML:

<element ondragover="myScript">

Try It Yourself

In JavaScript:

object.ondragover = function(){myScript};

Try It Yourself

In JavaScript, use the addEventListener() method:

object.addEventListener("dragover", myScript;

Try It Yourself

Note:Internet Explorer 8 or earlier versions do not support addEventListener() method.

Technical details

Bubble: Supported
Cancelable: Supported
Event type: DragEvent
Supported HTML tags: All HTML elements
DOM version: Level 3 Events

Browser support

The numbers in the table indicate the first browser version that fully supports the event.

Event Chrome IE Firefox Safari Opera
ondragover 4.0 9.0 3.5 6.0 12.0

More examples

Demonstration of all possible drag and drop events:

<p draggable="true" id="dragtarget">Drag me!</p>
<div class="droptarget">Drop here!</div>
<script>
/* ----------------- Events triggered on the drag target ----------------- */
document.addEventListener("dragstart", function(event) {
  // The dataTransfer.setData() method sets the data type and value of the data to be dragged
  event.dataTransfer.setData("Text", event.target.id);
  // Output some text when the p element starts to be dragged
  document.getElementById("demo").innerHTML = "Started to drag the p element.";
  // Change the opacity of the draggable element
  event.target.style.opacity = "0.4";
});
// Change the output text color when dragging the p element
document.addEventListener("drag", function(event) {
  document.getElementById("demo").style.color = "red";
});
// After the p element is dragged, output some text and reset the opacity
document.addEventListener("dragend", function(event) {
  document.getElementById("demo").innerHTML = "Finished dragging the p element.";
  event.target.style.opacity = "1";
});
/* ----------------- Events Triggered on Drop Target ----------------- */
// Change the DIV border style when the draggable p element enters the droptarget
document.addEventListener("dragenter", function(event) {
  if ( event.target.className == "droptarget" ) {
    event.target.style.border = "3px dotted red";
  }
});
// By default, data/elements cannot be placed in other elements. To allow placement, we must prevent the default handling of the element
document.addEventListener("dragover", function(event) {
  event.preventDefault();
});
// Reset the DIV border style when the draggable p element leaves the droptarget
document.addEventListener("dragleave", function(event) {
  if ( event.target.className == "droptarget" ) {
    event.target.style.border = "";
  }
});
/* On drop - Prevent the browser from handling the data by default (default to open as a link when dropped)*/
Reset the output text color and the DIV border color
Use the dataTransfer.getData() method to get the dragged data
The data being dragged is the id of the dragged element ("drag1")
Attach the dragged element to the drop element
*/
document.addEventListener("drop", function(event) {
  event.preventDefault();
  if ( event.target.className == "droptarget" ) {
    document.getElementById("demo").style.color = "";
    event.target.style.border = "";
    var data = event.dataTransfer.getData("Text");
    event.target.appendChild(document.getElementById(data));
  }
});
</script>

Try It Yourself

Related Pages

HTML Tutorial: HTML5 Drag and Drop

HTML Reference Manual: HTML draggable attribute