DataTransfer: effectAllowed ããããã£
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.effectAllowed ããããã£ã¯ããã©ãã°æä½ã§è¨±å¯ããã广ãæå®ãã¾ããã³ãã¼æä½ã¯ããã©ãã°ããããã¼ã¿ãç¾å¨ã®ä½ç½®ããããããä½ç½®ã«ã³ãã¼ãããã¨ã示ãããã«ä½¿ç¨ããã¾ããç§»åæä½ã¯ããã©ãã°ããããã¼ã¿ãç§»åãããã¨ã示ãããã«ä½¿ç¨ããããªã³ã¯æä½ã¯ãã½ã¼ã¹ä½ç½®ã¨ããããä½ç½®ã®éã«ä½ããã®å½¢ã®é¢ä¿ã¾ãã¯æ¥ç¶ã使ãããã¨ã示ãããã«ä½¿ç¨ããã¾ãã
ãã®ããããã£ã¯ã dragstart ã¤ãã³ãã§è¨å®ãã¦ããã©ãã°ã½ã¼ã¹ã®ãã©ãã°å¹æãè¨å®ããå¿
è¦ãããã¾ãã dragenter ããã³ dragover ã®ã¤ãã³ããã³ãã©ã¼å
ã§ã¯ããã®ããããã£ã¯ dragstart ã¤ãã³ãã§å²ãå½ã¦ãããå¤ã«è¨å®ãããããã effectAllowed ã使ç¨ãã¦ã©ã®å¹æã許å¯ããã¦ããããæ±ºå®ãããã¨ãã§ãã¾ãã
ã¤ãã³ã dragstart 以å¤ã®ã¤ãã³ãã§ effectAllowed ã«å¤ã代å
¥ãã¦ãä½ã®å¹æãããã¾ããã
å¤
æååã§ã許å¯ããã¦ãããã©ãã°æä½ã表ãã¾ããå¯è½ãªå¤ã¯ä»¥ä¸ã®éãã§ãã
none-
ã¢ã¤ãã ããããããããã¨ãã§ãã¾ããã
copy-
ã½ã¼ã¹ã¢ã¤ãã ã®ã³ãã¼ãæ°ããå ´æã«ä½æãããã¨ãã§ãã¾ãã
- copyLink
-
ã³ãã¼ããªã³ã¯æä½ã許å¯ããã¦ãã¾ãã
- copyMove
-
ã³ãã¼ãç§»åæä½ã許å¯ããã¦ãã¾ãã
- link
-
ã½ã¼ã¹ããæ°ããå ´æã¸ã®ãªã³ã¯ã確ç«ãããã¨ãã§ãã¾ãã
- linkMove
-
ãªã³ã¯ãç§»åã®æä½ã許å¯ããã¦ãã¾ãã
- move
-
ã¢ã¤ãã ãæ°ããå ´æã«ç§»åãããã¨ãã§ãã¾ãã
- all
-
ãã¹ã¦ã®æä½ã許å¯ããã¦ãã¾ãã
- uninitialized
-
广ãè¨å®ããã¦ããªãå ´åã®æ¢å®å¤ã§ã all ã¨åçã§ãã
effectAllowed ã«ä»ã®å¤ã代å
¥ãã¦ã广ã¯ãªããå¤ãå¤ãä¿æããã¾ãã
ä¾
>effectAllowed ã®è¨å®
ãã®ä¾ã§ã¯ã dragstart ãã³ãã©ã¼ã®ä¸ã§ effectAllowed ã "move" ã«è¨å®ãã¦ãã¾ãã
HTML
<div>
<p id="source" draggable="true">
ãã®è¦ç´ ã鏿ããããããã¾ã¼ã³ã«ãã©ãã°ãã¦ããæ¾ãã¨è¦ç´ ãç§»åãã¾ãã
</p>
</div>
<div id="target">ããããã¾ã¼ã³</div>
<pre id="output"></pre>
<button id="reset">Reset</button>
CSS
div {
margin: 0em;
padding: 2em;
}
#source {
color: blue;
border: 1px solid black;
}
#target {
border: 1px solid black;
}
#output {
height: 100px;
overflow: scroll;
}
JavaScript
function dragstartHandler(ev) {
log(`dragstart: effectAllowed = ${ev.dataTransfer.effectAllowed}`);
// ãã®è¦ç´ ã® ID ããã©ãã°ã®ãã¼ã¿ã«è¿½å ãããããããã³ãã©ã¼ãã©ã®è¦ç´ ã
// ããªã¼ã«è¿½å ããã°ããããç¥ããã¨ãã§ããããã«ãã¾ãã
ev.dataTransfer.setData("text", ev.target.id);
ev.dataTransfer.effectAllowed = "move";
}
function dropHandler(ev) {
log(`drop: effectAllowed = ${ev.dataTransfer.effectAllowed}`);
ev.preventDefault();
// ã¿ã¼ã²ããã® ID ãåå¾ããç§»åããè¦ç´ ãã¿ã¼ã²ããã® DOM ã«è¿½å ãã¾ãã
const data = ev.dataTransfer.getData("text");
ev.target.appendChild(document.getElementById(data));
}
function dragoverHandler(ev) {
log(`dragover: effectAllowed = ${ev.dataTransfer.effectAllowed}`);
ev.preventDefault();
}
const source = document.querySelector("#source");
const target = document.querySelector("#target");
source.addEventListener("dragstart", dragstartHandler);
target.addEventListener("dragover", dragoverHandler);
target.addEventListener("drop", dropHandler);
function log(message) {
const output = document.querySelector("#output");
output.textContent = `${output.textContent}\n${message}`;
output.scrollTop = output.scrollHeight;
}
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => document.location.reload());
çµæ
仿§æ¸
| Specification |
|---|
| HTML > # dom-datatransfer-effectallowed-dev > |