DataTransfer
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 ãªãã¸ã§ã¯ãã¯ãã³ã³ããã¹ãéã§è»¢éããããã¼ã¿ï¼ãã©ãã°ï¼ããããæä½ãã¯ãªãããã¼ãã®èªã¿æ¸ããªã©ï¼ãä¿æããããã«ä½¿ç¨ããã¾ãã1 ã¤ä»¥ä¸ã®ãã¼ã¿é
ç®ãä¿æã§ããåé
ç®ã¯ 1 ã¤ä»¥ä¸ã®ãã¼ã¿åãæã¤å¯è½æ§ãããã¾ãã
DataTransfer ã¯ä¸»ã« HTML ãã©ãã°ï¼ãããã API ã® DragEvent.dataTransfer ããããã£ã¨ãã¦è¨è¨ãããç¾å¨ã HTML ãã©ãã°ã¢ã³ãããããã»ã¯ã·ã§ã³ã§è¦å®ããã¦ãã¾ãããããç¾å¨ã§ã¯ãClipboardEvent.clipboardData ã InputEvent.dataTransfer ãªã©ã®ä»ã® API ã§ã使ç¨ãããããã«ãªãã¾ããããã ããä»ã® API 㯠dropEffect ãªã©ã®ããããã£ãç¡è¦ãããã®ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ä¸é¨ã®ã¿ã使ç¨ãã¾ããDataTransfer ã®ããã¥ã¡ã³ãã§ã¯ä¸»ã«ãã©ãã°ï¼ããããæä½ã«ãããä½¿ç¨æ³ã«ã¤ãã¦èª¬æãã¾ããä»ã®ã³ã³ããã¹ãã§ã® DataTransfer ã®ä½¿ç¨æ³ã«ã¤ãã¦ã¯ãå API ã®ããã¥ã¡ã³ããåç
§ãã¦ãã ããã
ã³ã³ã¹ãã©ã¯ã¿ã¼
DataTransfer()-
æ°ãã
DataTransferãªãã¸ã§ã¯ãã使ãã¦è¿ãã
ã¤ã³ã¹ã¿ã³ã¹ããããã£
DataTransfer.dropEffect-
ç¾å¨é¸æããã¦ãããã©ãã°ï¼ããããæä½ã®ç¨®é¡ãåå¾ããããæ°ããæä½ã®ç¨®é¡ãã»ããããããã¾ããå¤ã¯
none,copy,link,moveã®ããããã§ãã DataTransfer.effectAllowed-
ã¨ããããã¹ã¦ã®æä½ã®ç¨®é¡ãä¸ãã¾ãã
none,copy,copyLink,copyMove,link,linkMove,move,all,uninitializedã®ããããã§ãã DataTransfer.filesèªåå°ç¨-
ãã¼ã¿ãã©ã³ã¹ãã¡ã¼ãä¿æãã¦ãã¦å©ç¨å¯è½ãªãã¹ã¦ã®ãã¼ã«ã«ãã¡ã¤ã«ã®ãªã¹ããä¿æãã¾ãããã©ãã°æä½ããã¡ã¤ã«ã®ãã©ãã°ã«ãããã®ã§ã¯ãªãå ´åããã®ããããã£ã¯ç©ºã®ãªã¹ãã«ãªãã¾ãã
DataTransfer.itemsèªåå°ç¨-
å ¨ã¦ã®ãã©ãã°ãã¼ã¿ã®ãªã¹ãã§ãã
DataTransferItemListãªãã¸ã§ã¯ããè¿ãã¾ãã DataTransfer.typesèªåå°ç¨-
æååã®é åã§ã
dragstartã¤ãã³ãã§è¨å®ãããå½¢å¼ã示ãã¾ãã
ã¤ã³ã¹ã¿ã³ã¹ã¡ã½ãã
DataTransfer.addElement()Experimental 鿍æº-
æå®ãããè¦ç´ ã®ãã©ãã°ã½ã¼ã¹ãè¨å®ãã¾ããããã«ããã
dragããã³dragendã¤ãã³ããçºçããè¦ç´ ããããã©ã«ãã®ã¿ã¼ã²ããï¼ãã©ãã°ããããã¼ãï¼ã§ã¯ãªããªãã¾ããFirefox åºæã§ãã DataTransfer.clearData()-
æå®ãããåã®ãã¼ã¿ãåé¤ãã¾ããåã®æå®ã¯çç¥å¯è½ã§ããåã¨ãã¦ç©ºã®æååãæå®ããå ´åããããã¯åãæå®ããªãã£ãå ´åããã¹ã¦ã®åã®ãã¼ã¿ãåé¤ããã¾ããæå®ãããåã®ãã¼ã¿ãåå¨ããªãå ´åãã¾ãã¯ãã¼ã¿ãã©ã³ã¹ãã¡ã¼ãä½ããã¼ã¿ãæã£ã¦ããªãå ´åããã®ã¡ã½ããã¯ä½ããã¾ããã
DataTransfer.getData()-
æå®ãããåã®ãã¼ã¿ãåå¾ãã¾ããæå®ãããåã®ãã¼ã¿ãåå¨ããªãå ´åãã¾ãã¯ãã¼ã¿ãã©ã³ã¹ãã¡ã¼ãä½ããã¼ã¿ãä¿æãã¦ããªãå ´åã空æåãè¿ãã¾ãã
DataTransfer.setData()-
æå®ãããåã®ãã¼ã¿ãè¨å®ãã¾ãããã®åã®ãã¼ã¿ãåå¨ããªãå ´åããã¼ã¿ã¯ãªã¹ãã®æå¾ã«è¿½å ãããããããã¼ã¿åã®ãªã¹ãã®æå¾ã®é ç®ã¯ãæå¾ã«è¿½å ãããæ°ãããã¼ã¿åã¨ãªãã¾ãããã®åã®ãã¼ã¿ããã§ã«åå¨ãã¦ããå ´åããã¼ã¿åã®ãªã¹ãã«ãããå ã¨åãä½ç½®ã§ãå¤ããã¼ã¿ãæ°ãããã¼ã¿ã¨ç½®ãæããã¾ãã
DataTransfer.setDragImage()-
ç¬èªã®ãã®ãæ±ããããå ´åããã©ãã°ä¸ã«ä½¿ãããç»åãè¨å®ãã¾ãã
ä¾
ãã®è¨äºã«è¨è¼ããã¦ãããã¹ã¦ã®ã¡ã½ããã¨ããããã£ã«ã¯ããããããªãã¡ã¬ã³ã¹ãã¼ã¸ããããããããã®ãªãã¡ã¬ã³ã¹ãã¼ã¸ã«ã¯ãã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ä¾ãç´æ¥è¨è¼ããã¦ããããä¾ã¸ã®ãªã³ã¯ãå¼µããã¦ãã¾ãã
pate ã¾ã㯠drop ã¤ãã³ãã§ã®ãã¼ã¿ã®èªã¿åã
次ã®ä¾ã§ã¯ã<form> å
ã« 3 種é¡ã®ããã¹ãå
¥åè¦ç´ ãå«ã¾ãã¦ãã¾ããããã¹ãã® <input> è¦ç´ ã<textarea> è¦ç´ ããã㦠contenteditable 屿§ã true ã«è¨å®ããã <div> è¦ç´ ã§ããã¦ã¼ã¶ã¼ã¯ãããã®ãããã®è¦ç´ ã«ãããã¹ããè²¼ãä»ããããããããããã§ããClipboardEvent.clipboardData ã¾ã㯠DragEvent.dataTransfer ãªãã¸ã§ã¯ãå
ã®ãã¼ã¿ã表示ããã¾ãã
HTML
<form>
<fieldset>
<legend><input /></legend>
<input type="text" />
<table class="center">
<tbody>
<tr>
<th scope="row">æä½å</th>
<td></td>
</tr>
<tr>
<th scope="row">ã³ã³ãã³ãå</th>
<td></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset>
<legend><textarea /></legend>
<textarea></textarea>
<table class="center">
<tbody>
<tr>
<th scope="row">æä½å</th>
<td></td>
</tr>
<tr>
<th scope="row">ã³ã³ãã³ãå</th>
<td></td>
</tr>
</tbody>
</table>
</fieldset>
<fieldset>
<legend><div contenteditable /></legend>
<div contenteditable></div>
<table class="center">
<tbody>
<tr>
<th scope="row">æä½å</th>
<td></td>
</tr>
<tr>
<th scope="row">ã³ã³ãã³ãå</th>
<td></td>
</tr>
</tbody>
</table>
</fieldset>
<p class="center">
<input type="reset" />
</p>
</form>
CSS
.center {
text-align: center;
}
form > fieldset > * {
vertical-align: top;
}
form input,
form textarea,
form [contenteditable] {
min-width: 15rem;
padding: 0.25rem;
}
[contenteditable] {
appearance: textfield;
display: inline-block;
min-height: 1rem;
border: 1px solid;
}
form table {
display: inline-table;
}
table ol {
text-align: left;
}
JavaScript
const form = document.querySelector("form");
function displayData(event) {
if (event.type === "drop") event.preventDefault();
const cells = event.target.nextElementSibling.querySelectorAll("td");
cells[0].textContent = event.type;
const transfer = event.clipboardData || event.dataTransfer;
const ol = document.createElement("ol");
cells[1].textContent = "";
cells[1].appendChild(ol);
for (const item of transfer.items) {
const li = document.createElement("li");
li.textContent = `${item.kind} ${item.type}`;
ol.appendChild(li);
}
}
form.addEventListener("paste", displayData);
form.addEventListener("drop", displayData);
form.addEventListener("reset", () => {
for (const cell of form.querySelectorAll("[contenteditable], td")) {
cell.textContent = "";
}
});
çµæ
仿§æ¸
| Specification |
|---|
| HTML > # the-datatransfer-interface > |