DataTransfer: items ããããã£
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2018å¹´4æâ©.
items 㯠DataTransfer ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®èªã¿åãå°ç¨ããããã£ã§ããã©ãã°æä½ã§ã®ãã¼ã¿è»¢éé
ç®ã®ãªã¹ãã§ãããªã¹ãã«ã¯æä½ä¸ã®ã¢ã¤ãã ãã¨ã« 1 ã¤ã®é
ç®ãå«ã¾ãã¦ãããæä½ã«ã¢ã¤ãã ããªãã£ãå ´åã¯ãªã¹ãã¯ç©ºã«ãªãã¾ãã
å¤
ãã©ãã°æä½ã§ãã©ãã°ãããã¢ã¤ãã ã表ã DataTransferItem ãªãã¸ã§ã¯ããå«ã DataTransferItemList ãªãã¸ã§ã¯ãã§ããã©ãã°ããããªãã¸ã§ã¯ããã¨ã« 1 ã¤ã®ãªã¹ãé
ç®ãããã¾ãããã©ãã°æä½ã«ãã¼ã¿ããªãå ´åããªã¹ãã¯ç©ºã«ãªãã¾ãã
ä¾
>ãã©ãã°ãããé ç®ã®è¨é²
ãã®ä¾ã§ã¯ãitems ã使ã£ã¦ããã©ãã°ããé
ç®ã®æ
å ±ãè¨é²ãã¾ãã
HTML
<ul>
<li id="source1" draggable="true">ã¢ã¤ãã 1 ãããããã¾ã¼ã³ã«ãã©ãã°</li>
<li id="source2" draggable="true">ã¢ã¤ãã 2 ãããããã¾ã¼ã³ã«ãã©ãã°</li>
</ul>
<div id="target">ããããã¾ã¼ã³</div>
<button id="reset">ãªã»ãã</button>
CSS
div {
margin: 0em;
padding: 2em;
}
#target {
border: 1px solid black;
}
JavaScript
function dragstartHandler(ev) {
console.log(`dragstart: target.id = ${ev.target.id}`);
// ãã®è¦ç´ ã® ID ããã©ãã°ã®å
容ã«è¿½å ãããããããã³ãã©ã¼ãã©ã®
// è¦ç´ ãããªã¼ã«è¿½å ããã°ããããç¥ããã¨ãã§ããããã«ãã¾ãã
ev.dataTransfer.setData("text/plain", ev.target.id);
ev.dataTransfer.effectAllowed = "move";
}
function dropHandler(ev) {
ev.preventDefault();
// ã¿ã¼ã²ããã® ID ãåå¾ããç§»åããè¦ç´ ãã¿ã¼ã²ããã® DOM ã«è¿½å ãã¾ã
const data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
// åé
ç®ã® "kind" 㨠"type" ã表示ãã
if (ev.dataTransfer.items) {
for (const item of ev.dataTransfer.items) {
console.log(`kind = ${item.kind}, type = ${item.type}`);
}
}
}
function dragoverHandler(ev) {
ev.preventDefault();
// dropEffect ã move ã«è¨å®ãã
ev.dataTransfer.dropEffect = "move";
}
const source1 = document.querySelector("#source1");
const source2 = document.querySelector("#source2");
const target = document.querySelector("#target");
source1.addEventListener("dragstart", dragstartHandler);
source2.addEventListener("dragstart", dragstartHandler);
target.addEventListener("dragover", dragoverHandler);
target.addEventListener("drop", dropHandler);
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => document.location.reload());
çµæ
仿§æ¸
| Specification |
|---|
| HTML > # dom-datatransfer-items-dev > |