HTML ãã©ãã°ï¼ãããã API
HTML ãã©ãã°ï¼ããããã¤ã³ã¿ã¼ãã§ã¤ã¹ã«ãããã¢ããªã±ã¼ã·ã§ã³ã¯ãã©ã¦ã¶ã¼ã§ãã©ãã°ï¼ããããæ©è½ã使ç¨ãããã¨ãã§ãã¾ãã
ã¦ã¼ã¶ã¼ã¯ãã¦ã¹ã§ãã©ãã°å¯è½ãªè¦ç´ ã鏿ãããã®è¦ç´ ãããããå¯è½ãªè¦ç´ ã¸ãã©ãã°ãããã¦ã¹ãã¿ã³ãé¢ããã¨ã§ãããããããã¨ãã§ãã¾ãããã©ãã°æä½ã®éããã©ãã°å¯è½ãªè¦ç´ ã®åéæã®è¡¨ç¤ºããã¦ã¹ãã¤ã³ã¿ã¼ã«ç¶ãã¾ãã
ãã©ãã°å¯è½ã«ã§ããè¦ç´ ã®ç¨®é¡ããã©ãã°å¯è½ãªè¦ç´ ãçæãããã£ã¼ãããã¯ã®ç¨®é¡ãããã³ããããå¯è½ãªè¦ç´ ã¯ã«ã¹ã¿ãã¤ãºã§ãã¾ãã
ãã® HTML ãã©ãã°ï¼ããããã®æ¦è¦ã§ã¯ãã¤ã³ã¿ã¼ãã§ã¤ã¹ã®èª¬æãã¢ããªã±ã¼ã·ã§ã³ã«ãã©ãã°ï¼ããããã®ãµãã¼ãã追å ããããã®åºæ¬çãªã¹ããããããã³ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ç¸äºéç¨æ§ã®è¦ç´ãããã¾ãã
æ¦å¿µã¨ä½¿ç¨æ³
表é¢ä¸ããã©ãã°ï¼ããããã«ã¯å®éã«ã¯ 3 ã¤ã®ç°ãªãç¨éãããã¾ãããã¼ã¸å ã§ã®è¦ç´ ã®ãã©ãã°ããã¼ã¸ããã®ãã¼ã¿ã®ãã©ãã°ãããã¦ãã¼ã¸ã¸ã®ãã¼ã¿ã®ãã©ãã°ã§ãããããã¯å¾®å¦ã«ç°ãªãè¦ä»¶ã¨å®è£ ãæãã¦ãã¾ããããããªããããã©ãã°ï¼ãããã API ã¯ããããå ¨ã¦ã®ã¤ã³ã¿ã©ã¯ã·ã§ã³ãçµ±ä¸çãªã¢ãã«ã§æãããã¨ãå¯è½ã«ãã¦ãã¾ãã
ãã©ãã°æä½ã®æ ¸å¿ã«ã¯ã以ä¸ã® 3 ã¤ã®è¦ç´ ãå«ã¾ãã¾ãã
å¿ ãããããã 3 ã¤ãã¹ã¦ãèªåã®å¶å¾¡ä¸ã«ããã¨ã¯éãã¾ããããèªåã§å®ç¾©ããå¿ è¦ãããããã§ãããã¾ããã
- å¤é¨ãã¼ã¿ããã¼ã¸ã«ãã©ãã°ããå ´åãå®ç¾©ãã¹ããã©ãã°å¯è½ãªã¢ã¤ãã ã¯åå¨ãã¾ããï¼ä¾ãã°ããªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã®ãã¡ã¤ã«ã¨ã¯ã¹ããã¼ã©ã¼å ã®ãã¡ã¤ã«ãªã©ã該å½ãã¾ãï¼ã
- ãã¼ã¸å ã§è¦ç´ ããã©ãã°ããéã転éããããã¼ã¿ãå®ç¾©ããå¿ è¦ã¯ã»ã¨ãã©ããã¾ããããã©ãã°ãããè¦ç´ ãæä½ããã ãã§ååã§ãã
- ãã¼ã¸å¤ã¸ãã©ãã°ããå ´åãããããå ãå®ç¾©ããå¿ è¦ã¯ããã¾ããã
ãããããã©ã®ããã«å®ç¾©ããã使ç¨ããããã«ã¤ãã¦è¦ã¦ããã¾ãããã
ãã©ãã°ã¤ãã³ã
HTML ãã©ãã°ï¼ãããã ã§ã¯ DOM ã¤ãã³ãã¢ãã«ã¨ããã¦ã¹ã¤ãã³ãããç¶æ¿ãããã©ãã°ã¤ãã³ãã使ãã¾ãããã©ãã°æä½ã®ããã ãããã¤ãã®ã¤ãã³ã種é¡ãçºçãããã®ãã¡ããã¤ã㯠drag ã dragover ã¤ãã³ãã®ããã«ãè¤æ°çºçãããã¨ãããã¾ãã
| ã¤ãã³ã | çºçããæ¡ä»¶ |
|---|---|
dragstart |
ãã©ãã°å¯è½ãªã¢ã¤ãã ã®ãã©ãã°ãéå§ãããã¨ãã |
drag |
ãã©ãã°å¯è½ãªã¢ã¤ãã ããã©ãã°ããã¦ããã¨ããæ°ç¾ããªç§ãã¨ã«ã |
dragenter |
ãã®è¦ç´ ã«å ¥ã£ã¦ãããã©ãã°å¯è½ãªã¢ã¤ãã ãããã¨ãã |
dragleave |
ãã®è¦ç´ ããåºã¦ãããã©ãã°å¯è½ãªã¢ã¤ãã ãããã¨ãã |
dragover |
ãã®è¦ç´ ã®ä¸ããã©ãã°å¯è½ãªã¢ã¤ãã ããã©ãã°ããã¦ããã¨ããæ°ç¾ããªç§ãã¨ã«ã |
drop |
ãã®è¦ç´ ãããããã¿ã¼ã²ããã§ããããã©ãã°å¯è½ãªã¢ã¤ãã ããã®ä¸ã«ãããããããã¨ãã |
dragend |
ãã©ãã°å¯è½ãªã¢ã¤ãã ã®ãã©ãã°ãçµäºãããã¨ãã |
ã¡ã¢:
dragstart 㨠dragend ã¤ãã³ãã¯ãã©ã¡ãã OS ãããã©ã¦ã¶ã¼ã«ãã¡ã¤ã«ããã©ãã°ããã¨ãã«ã¯çºçãã¾ããã
åæ§ã«ãdragenterãdragleaveãdragoverãdrop ã®åã¤ãã³ãã¯ãããããå
ã¨ãªãããè¦ç´ ä¸ã§çºçãã¾ãããããã£ã¦ãã¢ã¤ãã ããã©ã¦ã¶ã¼ã®å¤ã¸ãã©ãã°ãã¦ããéã«ã¯çºçãã¾ããã
詳ããã¯ããã©ãã°æä½ãåç §ãã¦ãã ããã
ãã©ãã°å¯è½ãªã¢ã¤ãã
HTML ã§ã¯ãç»åããªã³ã¯ãããã³é¸æç¯å²ã¯ããã©ã«ãã§ãã©ãã°å¯è½ã§ããä»»æã®è¦ç´ ããã©ãã°å¯è½ã«ããã«ã¯ãdraggable 屿§ã "true" ã®å¤ã«è¨å®ãã¦ãã ããã
<p id="p1" draggable="true">ãã®è¦ç´ ã¯ãã©ãã°å¯è½ã§ãã</p>
ãã®æç¹ã§ãè¦ç´ ã«ã¯ãã©ãã°ç¨ã®å¤è¦³ãæ¢ã«é©ç¨ããã¦ãã¾ãããåä½ã¯ã¾ã å®ç¾©ããã¦ãã¾ããã
ç»åããªã³ã¯ã«ã¤ãã¦ã¯ãdraggable ããããã£ã¯ããã©ã«ãã§ true ã«è¨å®ããã¦ãã¾ãããããã®è¦ç´ ã®ãã©ãã°æ©è½ãç¡å¹ã«ããå ´åã®ã¿ãfalse ã«è¨å®ãã¦ãã ããããã©ãã°ä¸å¯ã®è¦ç´ ã§ã¯ãé常ããã©ãã°ãæä½ãè¡ãã¨ã代ããã«ããã¹ãã鏿ããã¾ãã
ã¡ã¢: è¦ç´ ããã©ãã°å¯è½ã«è¨å®ãããã¨ããã®å é¨ã®ããã¹ãããã®ä»ã®è¦ç´ ã¯ãé常ã®ãã¦ã¹ã¯ãªãã¯ã¨ãã©ãã°æä½ã§ã¯é¸æã§ããªããªãã¾ãã代ããã«ãã¦ã¼ã¶ã¼ã¯ããã¹ãã鏿ããéãAlt ãã¼ãæ¼ããã¾ã¾ãã¦ã¹ã使ç¨ãããããã¼ãã¼ãæä½ãè¡ããªããã°ãªãã¾ããã
鏿ç¯å²ããã©ãã°å¯è½ã§ãããã®å ´åãã½ã¼ã¹ãã¼ããããªãã¡ dragstart ã dragend ã¨ãã£ãå種ã¤ãã³ãã¯ããã©ãã°ãéå§ãããããã¹ããã¼ãã§çºçãã¾ãã鏿ç¯å²ã¯ãããã¹ããã¼ããè¦ç´ ãã¼ããå«ãè¤æ°ã®ãã¼ããé¨åçã¾ãã¯å®å
¨ã«å
å«ãããã¨ãã§ãããããã¯ãã¹ã¦åæã«ãã©ãã°ããã¦ãããã®ã¨ã¿ãªããã¾ãã
åè¿°ã®éãããã©ãã°ãããã¢ã¤ãã ã¯ã¦ã§ããã¼ã¸ä¸ã«ãªããã®ãä¾ãã°ãªãã¬ã¼ãã£ã³ã°ã·ã¹ãã ã®ãã¡ã¤ã«ã¨ã¯ã¹ããã¼ã©ã¼å
ã®ãã¡ã¤ã«ãªã©ã対象ã¨ãªãã¾ãããã ãã dragstart ããã³ dragend ã¤ãã³ããçºçããããã¨ãã§ããã®ã¯ãã¦ã§ããã¼ã¸ä¸ã®ã¢ã¤ãã ã®ã¿ã§ãã
詳ããã¯ããã©ãã°æä½ã¬ã¤ããåç §ãã¦ãã ããã
ãã©ãã°ãã¼ã¿ã¹ãã¢
JavaScript ãªãã¸ã§ã¯ããä»»æã®ã¦ã§ããã¼ã¸ã¸ç´æ¥è»¢éãããã¨ã¯ã§ãã¾ããããå¤é¨ã¢ããªã±ã¼ã·ã§ã³ã¸ã®è»¢éã¯ãªãããä¸å¯è½ã§ãããã®ãããã¦ã§ããã¼ã¸ã¨ãã¼ã¿ã®ããåããè¡ãã«ã¯ããã¼ã¿ãæååã«ï¼ã¾ã㯠File ã¨ãã¦ï¼ã·ãªã¢ã©ã¤ãºããå¿
è¦ãããã¾ãããã©ãã°ï¼ããããã§ã¯ããã®æåå㯠DataTransferItem ãªãã¸ã§ã¯ãã«ã«ãã»ã«åããã¾ãããã®ãªãã¸ã§ã¯ãã¯ç¹å®ã® typeï¼é常㯠text/html ãªã©ã® MIME ã¿ã¤ãï¼ãå®ç¾©ãã¦ãããæååã®è§£éæ¹æ³ãè¦å®ãã¾ãã
ããããã®ãã©ãã°ï¼ããããæä½ã«ã¯ãé¢é£ä»ããããããã©ãã°ãã¼ã¿ã¹ãã¢ããåå¨ãã¾ããããã¯ãDragEvent ã® dataTransfer ããããã£ãéãã¦ã¢ã¯ã»ã¹å¯è½ãª DataTransfer ãªãã¸ã§ã¯ãã§ããç»åããªã³ã¯ã鏿ç¯å²ãªã©ã®ããã©ã«ãã§ãã©ãã°å¯è½ãªé
ç®ã«ã¤ãã¦ã¯ããã©ãã°ãã¼ã¿ã¯ãã©ã¦ã¶ã¼ã«ãã£ã¦æ¢ã«å®ç¾©ããã¦ãã¾ãã䏿¹ãdraggable屿§ã使ç¨ãã¦å®ç¾©ãããã«ã¹ã¿ã ã®ãã©ãã°å¯è½è¦ç´ ã«ã¤ãã¦ã¯ããã©ãã°ãã¼ã¿ãèªèº«ã§å®ç¾©ããå¿
è¦ãããã¾ãããã¼ã¿ã¹ãã¢ã¸ã®å¤æ´ãå ããããã®ã¯ã dragstart ãã³ãã©ã¼å
ã®ã¿ã§ãããã®ä»ã®ãã©ãã°ã¤ãã³ãã«ããã dataTransfer ã§ã¯ããã¼ã¿ã¹ãã¢ã¯å¤æ´ã§ãã¾ããã
setData() ã¡ã½ããã¯ãã©ãã°ãã¼ã¿ã«é
ç®ã追å ããã®ã«ä½¿ç¨ããããã®ä¾ã¯ä¸è¨ã®éãã§ãã
function dragstartHandler(ev) {
// ç°ãªã種é¡ã®ãã©ãã°ãã¼ã¿ã追å ãã
ev.dataTransfer.setData("text/plain", ev.target.innerText);
ev.dataTransfer.setData("text/html", ev.target.outerHTML);
ev.dataTransfer.setData(
"text/uri-list",
ev.target.ownerDocument.location.href,
);
}
const p1 = document.getElementById("p1");
p1.addEventListener("dragstart", dragstartHandler);
ããã«ããã¼ã¿ã¹ãã¢ãããèªã¿åãããå¯è½ãªã®ã¯ãdragstart ã¤ãã³ããé¤ããdrop ã¤ãã³ãä¸ã®ã¿ã¨ãªãã¾ãï¼ããã«ããããããå
ããã¼ã¿ãåå¾ã§ãã¾ãï¼ããã®ä»ã®ã¤ãã³ãã§ã¯ããã¼ã¿ã¹ãã¢ã«ã¢ã¯ã»ã¹ãããã¨ã¯ã§ãã¾ããã
詳ããã¯ããã©ãã°ãã¼ã¿ã¹ãã¢ã§ã®ä½æ¥ãåç §ãã¦ãã ããã
ããããã¿ã¼ã²ãã
ãããããã¿ã¼ã²ãããã¨ã¯ãã¦ã¼ã¶ã¼ããã©ãã°ããã¢ã¤ãã ãããããã§ããè¦ç´ ã®ãã¨ã§ããããã©ã«ãã§ã¯ãã»ã¨ãã©ã®è¦ç´ ã¯ããããã¿ã¼ã²ããã§ã¯ããã¾ããããã©ãã°ãè§£é¤ããã¨ãããã©ã¤ããã¯ãã¢ãã¡ã¼ã·ã§ã³ã表示ããããã©ãã°ï¼ããããã失æãããã¨ã示ãã¾ããä»»æã®è¦ç´ ã¯ãèªèº«ã§çºçãã dragover ã¤ãã³ãã preventDefault() ã§ãã£ã³ã»ã«ãããã¨ã«ãããããããã¿ã¼ã²ããã¨ãªããã¨ãå¯è½ã§ãã
drop ã¤ãã³ãã¯ããããã¿ã¼ã²ããä¸ã§ããçºçããããã©ãã°ãã¼ã¿ã¹ãã¢ãèªã¿åããå¯ä¸ã®ã¿ã¤ãã³ã°ã¨ãªãã¾ãã
以ä¸ã®ä¾ã¯ãæå°éã®æå¹ãªããããã¿ã¼ã²ããã示ãã¦ãããã¾ãããã以åã®ä¾ã®ã³ã¼ããçµã¿åããã¦ãã¾ãã
<p id="target">ããããã¾ã¼ã³</p>
const target = document.getElementById("target");
// dragover ããã£ã³ã»ã«ããã¨ãdrop ãçºçãã
target.addEventListener("dragover", (ev) => {
ev.preventDefault();
});
target.addEventListener("drop", (ev) => {
ev.preventDefault();
const data = ev.dataTransfer.getData("text/plain");
ev.target.append(data);
});
詳ããæ å ±ã¯ãããããå ã®æå®ãåç §ãã¦ãã ããã
ã¬ã¤ã
- ãã©ãã°æä½
-
ãã©ãã°ï¼ããããæä½ä¸ã«çºçããæé ã«ã¤ãã¦èª¬æããåãã³ãã©ã¼å ã§ã¢ããªã±ã¼ã·ã§ã³ãå®è¡ãã¹ãå¦çãè¨è¿°ãã¾ãã
- ãã©ãã°ãã¼ã¿ã¹ãã¢ã§ã®ä½æ¥
-
ãã©ãã°ï¼ããããæä½ä¸ã«ããã©ãã°ãã¼ã¿ã¹ãã¢ã¸ã®èªã¿æ¸ããè¡ãæ¹æ³ã«ã¤ãã¦èª¬æãã¾ãã
- ãã¡ã¤ã«ã®ãã©ãã°ï¼ãããã
-
ãã¡ã¤ã«ã®ãã©ãã°ï¼ããããæä½ãåãä»ããåºæ¬ã¤ã³ã¿ã¼ãã§ã¤ã¹ã®å®è£ ã«é¢ããå®è·µã¬ã¤ãã§ãã
- ãã©ãã°ï¼ããããã®ã§ããã«ã³ãã³ãã¼ã
-
ã¦ã§ããã¼ã¸å ã§è¦ç´ ããã©ãã°ï¼ããããããæ©è½ãåããã«ã³ãã³ãã¼ããå®è£ ããããã®å®è·µã¬ã¤ãã§ãã
ã¤ã³ã¿ã¼ãã§ã¤ã¹
DragEvent-
ãã©ãã°ã¤ãã³ããã³ãã©ã¼ã«æ¸¡ãããã¤ãã³ããªãã¸ã§ã¯ãã§ãã
DataTransfer-
ã³ã³ããã¹ãéã§è»¢éããããããããã¼ã¿ãä¿æãã¾ããããã¹ãã¢ã¤ãã ã¨ãã¡ã¤ã«ã¢ã¤ãã ã§æ§æããã¦ãã¾ããå½åã¯ãã©ãã°ï¼ããããç¨ã«è¨è¨ããããã®ã§ãããç¾å¨ã§ã¯ã¯ãªãããã¼ã API ãªã©ã®ä»ã®ã³ã³ããã¹ãã§ã使ç¨ããã¦ãã¾ãã
DataTransferItem-
ãã©ãã°ãã¼ã¿ã¹ãã¢å ã® 1 ã¤ã®ã¢ã¤ãã ã表ãã¾ããããã¯ããã¹ãã¢ã¤ãã ã¾ãã¯ãã¡ã¤ã«ã¢ã¤ãã ã¨ãªãã¾ãã
DataTransferItemList-
ãã©ãã°ãã¼ã¿ã¹ãã¢å ã®
DataTransferItemãªãã¸ã§ã¯ãã®ãªã¹ãã表ãã¾ãã
ä¾ã¨ãã¢
- Copying and moving elements with the
DataTransferinterface - Copying and moving elements with the
DataTransferListIteminterface
åã¤ã³ã¿ã¼ãã§ã¤ã¹ã®ãªãã¡ã¬ã³ã¹ãã¼ã¸ã«ã¯ãåå¥ã®ä¾ãæ²è¼ããã¦ãã¾ãã
仿§æ¸
| Specification |
|---|
| HTML > |