You are here: Reference > JavaScript > client-side > event handling > events > dragexit

dragexit event

Browser support:
Occurs on an element when the user moves the mouse pointer out of it during a drag operation.
Note: The dragexit event is obsolete in Firefox from version 3.5. Use the ondragleave event instead.
If some content is selected in a HTML document, the user has the ability to start dragging it. To drag the selected content, press and hold down a mouse button (browsers support dragging with the left button by default) on the selection and start to move the mouse. To drop the dragged data, release the mouse button over the target.

By default, the target of a drag operation can be an editable element (textarea, input:text, input:password, input:search), an element in content editable mode, a document in design mode or another application. If you want to allow for other elements to be a drop target during a drag operation, cancel both the ondragenter and ondragover events.

  • The following events are fired on the source element:
    • The ondragstart (Internet Explorer, Google Chrome, Safari and Firefox from version 3.5) and draggesture (Firefox) events are fired when the user starts to drag the selection.
    • The ondrag event is fired periodically during the drag operation.
    • The ondragend event is fired when the user has finished the drag operation (released the mouse button or pressed ESC).
    Note: If the source of a drag operation is an editable element (see above), the draggesture event is fired after the drag operation has been finished. It seems to be a bug in Firefox.
  • The following events are fired on an arbitrary element during dragging:
    • The ondragenter event is fired when the user moves the mouse pointer into the element.
    • The ondragover event is fired periodically while the mouse pointer is over the element.
    • The ondragleave (Internet Explorer, Google Chrome, Safari and Firefox from version 3.5) and dragexit (Firefox) events are fired when the user moves the mouse pointer out of the element.
  • The following events are fired on a possible target element:
    • The ondrop (Internet Explorer, Google Chrome, Safari and Firefox from version 3.5) and dragdrop (older Firefox) events are fired when the dragged data is dropped on the element.
    Note: the ondragover event needs to be canceled in Google Chrome and Safari to allow firing the ondrop event.
If you want to customize the drag-and-drop operation or you need access to the dragged data, use the dataTransfer object.

How to register:

In HTML:
This event cannot be registered in HTML.

In JavaScript:
object.addEventListener ("dragexit", handler, useCapture);
The event object is accessible to all event handlers in all browsers. The properties of the event object contain additional information about the current event. To get further details about these properties and the possible event handler registration methods, please see the page for the event object.
For a complete list of events, see the page for Events in JavaScript.

Basic information:

Bubbles Yes
Cancelable Yes
Event object
MouseEvent
3.5
DragEvent
3.5

Actions that invoke the dragexit event:

  • Moving the mouse pointer out of an element during a drag operation.
  • Pressing ESC while the mouse cursor is over the element during a drag operation.
  • Dropping the dragged data into the element.

The order of events related to the dragexit event:

Action Event order
If the user drops the dragged data into the element.
Internet Explorer, Google Chrome, Safari Firefox from version 3.5 older Firefox
  1. ondragenter
  2. ondragover
  3. ondrop
  1. ondragenter
  2. ondragover
  3. dragexit
  4. ondrop
  1. ondragenter
  2. ondragover
  3. dragdrop
  4. dragexit
Moving the mouse pointer out of the element or pressing ESC while the mouse cursor is over the element.
Internet Explorer, Google Chrome, Safari Firefox from version 3.5 older Firefox
  1. ondragenter
  2. ondragover
  3. ondragleave
  1. ondragenter
  2. ondragover
  3. ondragleave
  4. dragexit
  1. ondragenter
  2. ondragover
  3. dragexit
Note: the ondragend event is fired exactly once, at the end of a drag-and-drop operation, after any other drag and drop related events (except the draggesture event in some cases).

Example HTML code 1:

This example illustrates the use of the dragexit event:
<head>
    <script type="text/javascript">
        function Init () {
            var target = document.getElementById ("target");
            if (target.addEventListener) {  // all browsers except IE before version 9
                    // Firefox, Google Chrome, Safari, Internet Exlorer
                target.addEventListener ("dragenter", OnDragEnter, false);
                    // Firefox from version 3.5, Google Chrome, Safari, Internet Exlorer
                target.addEventListener ("dragleave", OnDragLeave, false);
                    // Firefox
                target.addEventListener ("dragexit", OnDragLeave, false);
            }
            else {
                if (target.attachEvent) {   // IE before version 9
                    target.attachEvent ("ondragenter", OnDragEnter);
                    target.attachEvent ("ondragleave", OnDragLeave);
                }
            }
        }

        function OnDragEnter () {
            var target = document.getElementById ("target");
            target.style.border = "2px solid blue";
        }
        function OnDragLeave () {
            var target = document.getElementById ("target");
            target.style.border = "";
        }
    </script>
</head>
<body onload="Init ();">
    <div id="source" style="background-color:#d0f0a0; width:200px">
        Select and drag some text from this field and drop it into the target.
    </div>
    <br /><br />
    <textarea id="target" rows="5" cols="40">
        This is the target element.
        When the mouse is over this element during a drag operation, a blue border appears.
    </textarea>
</body>
Did you find this example helpful? yes no

Example HTML code 2:

This example dumps the order of events in case of dragging:
<head>
    <script type="text/javascript">
        function Init () {
            var source = document.getElementById ("source");
            var target = document.getElementById ("target");
            if (source.addEventListener) {  // all browsers except IE before version 9
                    // Firefox from version 3.5, Google Chrome, Safari, Internet Exlorer
                source.addEventListener ("dragstart", DumpInfo, false);
                    // Firefox before version 3.5
                source.addEventListener ("draggesture", DumpInfo, false);
                    // Firefox, Google Chrome, Safari, Internet Exlorer
                source.addEventListener ("drag", DumpInfo, false);
                    // Firefox, Google Chrome, Safari, Internet Exlorer
                source.addEventListener ("dragend", DumpInfo, false);

                    // Firefox, Google Chrome, Safari, Internet Exlorer
                target.addEventListener ("dragenter", DumpInfo, false);
                    // Firefox, Google Chrome, Safari, Internet Exlorer
                target.addEventListener ("dragover", DumpInfo, false);
                    // Firefox from version 3.5, Google Chrome, Safari, Internet Exlorer
                target.addEventListener ("dragleave", DumpInfo, false);
                    // Firefox
                target.addEventListener ("dragexit", DumpInfo, false);
                    // Firefox from version 3.5, Google Chrome, Safari, Internet Exlorer
                target.addEventListener ("drop", DumpInfo, false);
                    // Firefox before version 3.5
                target.addEventListener ("dragdrop", DumpInfo, false);
            }
            else {
                if (source.attachEvent) {   // IE before version 9
                    source.attachEvent ("ondragstart", DumpInfo);
                    source.attachEvent ("ondrag", DumpInfo);
                    source.attachEvent ("ondragend", DumpInfo);

                    target.attachEvent ("ondragenter", DumpInfo);
                    target.attachEvent ("ondragover", DumpInfo);
                    target.attachEvent ("ondragleave", DumpInfo);
                    target.attachEvent ("ondrop", DumpInfo);
                }
            }
        }

        function DumpInfo (event) {
            var firedOn = event.target ? event.target : event.srcElement;
            if (firedOn.tagName === undefined) {
                firedOn = firedOn.parentNode;
            }

            var info = document.getElementById ("info");
            if (firedOn.id == "source") {
                info.innerHTML += "<span style='color:#008000'>" + event.type + "</span>, ";
            }
            else {
                info.innerHTML += "<span style='color:#800000'>" + event.type + "</span>, ";
            }

            if (event.type == "dragover") {
                    // the dragover event needs to be canceled to allow firing the drop event
                if (event.preventDefault) {
                    event.preventDefault ();
                }
            }
        }
    </script>
</head>
<body onload="Init ();">
    <div id="source" style="background-color:#d0f0a0; width:200px">
        Select and drag some text from this field and drop it into the target.
    </div>
    <br /><br />
    <textarea id="target" rows="5">
        This is the target element.
    </textarea>
    <br /><br />
    <div id="info" style="background-color:#f0f0ff; font-weight:bold;"></div>
</body>
Did you find this example helpful? yes no

Related pages:

External links:

User Contributed Comments

Post Content

Post Content