DataTransferItemList
The DataTransferItemList
object is a list of DataTransferItem
objects representing items being dragged. During a drag operation, each DragEvent
has a dataTransfer
property and that property is a DataTransferItemList
.
The individual items can be accessed using the array operator []
.
This interface has no constructor.
Properties
-
DataTransferItemList.length
Read only -
An
unsigned long
that is the number of drag items in the list.
Methods
DataTransferItemList.add()
-
Adds an item (either a
File
object or astring
) to the drag item list and returns aDataTransferItem
object for the new item. DataTransferItemList.remove()
-
Removes the drag item from the list at the given index.
DataTransferItemList.clear()
-
Removes all of the drag items from the list.
DataTransferItemList.DataTransferItem()
-
Getter that returns a
DataTransferItem
at the given index.
Example
This example shows how to use drag and drop.
JavaScript
function dragstart_handler(ev) { console.log("dragStart"); // Add this element's id to the drag payload so the drop handler will // know which element to add to its tree var dataList = ev.dataTransfer.items; dataList.add(ev.target.id, "text/plain"); // Add some other items to the drag payload dataList.add("<p>... paragraph ...</p>", "text/html"); dataList.add("http://www.example.org","text/uri-list"); } function drop_handler(ev) { console.log("Drop"); ev.preventDefault(); var data = ev.dataTransfer.items; // Loop through the dropped items and log their data for (var i = 0; i < data.length; i++) { if ((data[i].kind == 'string') && (data[i].type.match('^text/plain'))) { // This item is the target node data[i].getAsString(function (s){ ev.target.appendChild(document.getElementById(s)); }); } else if ((data[i].kind == 'string') && (data[i].type.match('^text/html'))) { // Drag data item is HTML data[i].getAsString(function (s){ console.log("... Drop: HTML = " + s); }); } else if ((data[i].kind == 'string') && (data[i].type.match('^text/uri-list'))) { // Drag data item is URI data[i].getAsString(function (s){ console.log("... Drop: URI = " + s); }); } } } function dragover_handler(ev) { console.log("dragOver"); ev.preventDefault(); // Set the dropEffect to move ev.dataTransfer.dropEffect = "move" } function dragend_handler(ev) { console.log("dragEnd"); var dataList = ev.dataTransfer.items; // Clear any remaining drag data dataList.clear(); }
HTML
<div> <p id="source" ondragstart="dragstart_handler(event);" ondragend="dragend_handler(event);" draggable="true"> Select this element, drag it to the Drop Zone and then release the selection to move the element.</p> </div> <div id="target" ondrop="drop_handler(event);" ondragover="dragover_handler(event);">Drop Zone</div>
CSS
div { margin: 0em; padding: 2em; } #source { color: blue; border: 1px solid black; } #target { border: 1px solid black; }
Result
Specifications
Specification |
---|
HTML Standard (HTML) # the-datatransferitemlist-interface |
Browser compatibility
Desktop | Mobile | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|
Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | |
DataTransferItemList |
13 |
12 |
50 |
No |
12 |
6 |
4.4 |
18 |
50 |
No |
6 |
1.0 |
add |
13 |
12 |
50 |
No |
12 |
6 |
4.4 |
18 |
50 |
No |
6 |
1.0 |
clear |
13 |
12 |
50 |
No |
12 |
6 |
4.4 |
18 |
50 |
No |
6 |
1.0 |
length |
13 |
12 |
50 |
No |
12 |
6 |
4.4 |
18 |
50 |
No |
6 |
1.0 |
remove |
31 |
12 |
50 |
No |
12 |
6 |
4.4.3 |
31 |
50 |
No |
6 |
2.0 |
© 2005–2021 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/DataTransferItemList