DataTransferItemList
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2016å¹´11æâ©.
DataTransferItemList ãªãã¸ã§ã¯ã㯠DataTransferItem ãªãã¸ã§ã¯ãã®ãªã¹ãã§ããã©ãã°ããã¦ããã¢ã¤ãã ã表ãã¾ãããã©ãã°æä½ã®éãããããã® DragEvent 㯠dataTransfer ããããã£ãæã¡ããã®ããããã£ã DataTransferItemList ã¨ãªãã¾ãã
ããããã®ã¢ã¤ãã ã¯ããã©ã±ããè¨æ³ [] ã使ç¨ãã¦ã¢ã¯ã»ã¹ã§ãã¾ãã
DataTransferItemList ã¯ä¸»ã« HTML ãã©ãã°ï¼ãããã API ã®ããã«è¨è¨ãããç¾å¨ã HTML ãã©ãã°ã¢ã³ãããããã»ã¯ã·ã§ã³ã§è¦å®ããã¦ãã¾ãããããç¾å¨ã§ã¯ãClipboardEvent.clipboardData ã InputEvent.dataTransfer ãªã©ã®ä»ã® API ã§ã使ç¨ãããããã«ãªãã¾ãããDataTransferItemList ã®ããã¥ã¡ã³ãã§ã¯ä¸»ã«ãã©ãã°ï¼ããããæä½ã«ãããä½¿ç¨æ³ã«ã¤ãã¦èª¬æãã¾ããä»ã®ã³ã³ããã¹ãã§ã® DataTransferItemList ã®ä½¿ç¨æ³ã«ã¤ãã¦ã¯ãå API ã®ããã¥ã¡ã³ããåç
§ãã¦ãã ããã
ãã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ã¯ã³ã³ã¹ãã©ã¯ã¿ã¼ãããã¾ããã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
DataTransferItemList.lengthèªåå°ç¨-
unsigned longã§ããªã¹ãå ã®ãã©ãã°ã¢ã¤ãã ã®æ°ã表ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
DataTransferItemList.add()-
ãã©ãã°ã¢ã¤ãã ã®ãªã¹ãã«ã¢ã¤ãã ï¼
Fileãªãã¸ã§ã¯ãã¾ãã¯æååï¼ã追å ããæ°ããã¢ã¤ãã ã®DataTransferItemãªãã¸ã§ã¯ããè¿ãã¾ãã DataTransferItemList.remove()-
æå®ãããä½ç½®ã®ãªã¹ããããã©ãã°ã¢ã¤ãã ãåé¤ãã¾ãã
DataTransferItemList.clear()-
ãªã¹ããããã¹ã¦ã®ãã©ãã°é ç®ãåé¤ãã¾ãã
ä¾
ãã®ä¾ã¯ããã©ãã° & ããããã®ä½¿ãæ¹ã表ãã¾ãã
HTML
<div>
<p id="source" draggable="true">
ãã®è¦ç´ ã鏿ããããããã¾ã¼ã³ã¾ã§ãã©ãã°ãã¦ã鏿ãè§£é¤ããã¨è¦ç´ ãç§»åãã¾ãã
</p>
</div>
<div id="target">ããããã¾ã¼ã³</div>
CSS
div {
margin: 0em;
padding: 2em;
}
#source {
color: blue;
border: 1px solid black;
}
#target {
border: 1px solid black;
}
JavaScript
const source = document.getElementById("source");
const target = document.getElementById("target");
source.addEventListener("dragstart", (ev) => {
console.log("dragStart");
// ãã®è¦ç´ ã® ID ããã©ãã°ãã¤ãã¼ãã«è¿½å ãããããããã³ãã©ã¼ã
// ã©ã®è¦ç´ ãããªã¼ã«è¿½å ãã¹ãããèªèã§ããããã«ãã
const dataList = ev.dataTransfer.items;
dataList.add(ev.target.id, "text/plain");
// ãã©ãã°ãã¼ã¿æ¬ä½ã«ä»ã®ã¢ã¤ãã ã追å ãã
dataList.add("<p>段è½â¦</p>", "text/html");
dataList.add("http://www.example.org", "text/uri-list");
});
source.addEventListener("dragend", (ev) => {
console.log("dragEnd");
const dataList = ev.dataTransfer.items;
// æ®ã£ã¦ãããã©ãã°ãã¼ã¿ããã¹ã¦ã¯ãªã¢
dataList.clear();
});
target.addEventListener("drop", (ev) => {
console.log("Drop");
ev.preventDefault();
// ãããããããã¢ã¤ãã ãã«ã¼ãå¦çãããã®ãã¼ã¿ããã°ã«è¨é²
for (const item of ev.dataTransfer.items) {
if (item.kind === "string" && item.type.match(/^text\/plain/)) {
// ã¢ã¤ãã ãã¿ã¼ã²ãããã¼ã
item.getAsString((s) => {
ev.target.appendChild(document.getElementById(s));
});
} else if (item.kind === "string" && item.type.match(/^text\/html/)) {
// ãã©ãã°ãã¼ã¿é
ç®ã HTML
item.getAsString((s) => {
console.log(`⦠Drop: HTML = ${s}`);
});
} else if (item.kind === "string" && item.type.match(/^text\/uri-list/)) {
// ãã©ãã°ãã¼ã¿é
ç®ã URI
item.getAsString((s) => {
console.log(`⦠Drop: URI = ${s}`);
});
}
}
});
target.addEventListener("dragover", (ev) => {
console.log("dragOver");
ev.preventDefault();
// dropEffect ããç§»åãã«è¨å®
ev.dataTransfer.dropEffect = "move";
});
çµæ
仿§æ¸
| Specification |
|---|
| HTML > # the-datatransferitemlist-interface > |