DataTransfer: setData() ã¡ã½ãã
Baseline
Widely available
This feature is well established and works across many devices and browser versions. Itâs been available across browsers since â¨2015å¹´7æâ©.
DataTransfer.setData() ã¡ã½ããã¯ããã©ãã°æä½ã®ãã©ãã°ãã¼ã¿ã«æå®ãããã¼ã¿ã¨åãè¨å®ãã¾ããä¸ããããåã®ãã¼ã¿ãåå¨ããªãå ´åããã®ãã¼ã¿ã¯ãã©ãã°ãã¼ã¿ã¹ãã¢ã®æ«å°¾ã«å ãããããã®ãã㪠types ãªã¹ãã®æå¾ã®é
ç®ã¯æ°ããåã«ãªãã¾ããä¸ããããåã®ãã¼ã¿ãåå¨ããå ´åãæ¢åã®ãã¼ã¿ãåãä½ç½®ã§ç½®ãæãããã¾ããåãåã®ãã¼ã¿ãç½®ãæããããæãtypes ãªã¹ãã®ä¸¦ã³é ã¯å¤æ´ããã¾ããã
ãã¼ã¿åã¯ãä¾ãã° text/plain ã text/uri-list ã§ãã
æ§æ
setData(format, data)
弿°
format-
æååã§ã
DataTransferã«è¿½å ãããã©ãã°ãã¼ã¿ã®åã表ãã¾ãã data-
æååã§ã
DataTransferã«è¿½å ãããã¼ã¿ã表ãã¾ãã
è¿å¤
ãªã (undefined)ã
ä¾
>è¦ç´ ã®ãã©ãã°
ãã®ä¾ã§ã¯ã<p> è¦ç´ ãã¿ã¼ã²ããã® <div> è¦ç´ ã®ä¸ã«ãã©ãã°ãããã¨ãã§ãã¾ãã
-
dragstartãã³ãã©ã¼ä¸ã§ãsetData()ã使ç¨ãã¦<p>è¦ç´ ã®idãDataTransferãªãã¸ã§ã¯ãã«è¿½å ãã¾ãã -
dropãã³ãã©ã¼ã§ã¯ãidãåå¾ããããã使ç¨ãã¦<p>è¦ç´ ãã¿ã¼ã²ããã«ç§»åãã¾ãã
HTML
<div>
<p id="source" draggable="true">
ãã®è¦ç´ ã鏿ããããããã¾ã¼ã³ã¾ã§ãã©ãã°ãã¦ãã鏿ãè§£é¤ããã¨ãè¦ç´ ãç§»åãã¾ãã
</p>
</div>
<div id="target">ããããã¾ã¼ã³</div>
<button id="reset">ä¾ããªã»ãã</button>
CSS
div {
margin: 0.5em 0;
padding: 2em;
}
#target,
#source {
border: 1px solid black;
padding: 0.5rem;
}
.dragging {
background-color: pink;
}
JavaScript
const source = document.querySelector("#source");
source.addEventListener("dragstart", (ev) => {
console.log("dragStart");
// ã½ã¼ã¹è¦ç´ ã®èæ¯è²ã夿´ãã¦ããã©ãã°ãéå§ããããã¨ã示ã
ev.currentTarget.classList.add("dragging");
// ãã©ãã°ãã¼ã¿ãã£ãã·ã¥ï¼ãã¹ã¦ã®å½¢å¼/åï¼ãã¯ãªã¢
ev.dataTransfer.clearData();
// ãã©ãã°ã®å½¢å¼ã¨ãã¼ã¿ãè¨å®ã
// ãã¼ã¿ã«ã¤ãã³ãã¿ã¼ã²ããã® ID ã使ç¨
ev.dataTransfer.setData("text/plain", ev.target.id);
});
source.addEventListener("dragend", (ev) =>
ev.target.classList.remove("dragging"),
);
const target = document.querySelector("#target");
target.addEventListener("dragover", (ev) => {
console.log("dragOver");
ev.preventDefault();
});
target.addEventListener("drop", (ev) => {
console.log("Drop");
ev.preventDefault();
// ãã¼ã¿ï¼ã½ã¼ã¹è¦ç´ ã® IDï¼ãåå¾
const data = ev.dataTransfer.getData("text");
const source = document.getElementById(data);
ev.target.appendChild(source);
});
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => document.location.reload());
çµæ
仿§æ¸
| Specification |
|---|
| HTML > # dom-datatransfer-setdata-dev > |