DataTransfer: свойство effectAllowed
Базовая Широко доступна
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Свойство DataTransfer.effectAllowed определяет разрешённый эффект операции перетаскивания. Операция copy указывает, что данные, которые перетаскиваются, будут скопированы из текущего расположения в расположение назначения. Операция move указывает, что данные, которые перетаскиваются, будут перемещены, а операция link указывает, что будет создано некое отношение или связь между исходным и целевым расположениями.
Это свойство должно быть установлено в событии dragstart для определения желаемого эффекта перетаскивания для источника перетаскивания. В обработчиках событий dragenter и dragover это свойство будет установлено в значение, присвоенное во время события dragstart, таким образом effectAllowed может быть использовано для определения разрешённого эффекта.
Присвоение значения effectAllowed в событиях, кроме dragstart, не имеет эффекта.
Значение
Строка, представляющая разрешённую операцию перетаскивания. Возможные значения:
none-
Элемент не может быть помещён.
copy-
Копия исходного элемента может быть создана в новом расположении.
copyLink-
Разрешена операция копирования или создания ссылки.
copyMove-
Разрешены операции копирования или перемещения.
link-
Ссылка может быть создана на источник в новом расположении.
linkMove-
Разрешены операции создания ссылки или перемещения.
move-
Элемент может быть перемещён в новое расположение.
all-
Разрешены все операции.
uninitialized-
Значение по умолчанию, когда эффект не задан, эквивалентно значению all.
Присвоение любого другого значения effectAllowed не имеет эффекта, и старое значение сохраняется.
Примеры
Установка effectAllowed
В этом примере мы устанавливаем effectAllowed в "move" в обработчике dragstart.
HTML
<div>
<p id="source" draggable="true">
Select this element, drag it to the Drop Zone and then release the selection
to move the element.
</p>
</div>
<div id="target">Drop Zone</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}`);
// Add this element's id to the drag payload so the drop handler will
// know which element to add to its tree
ev.dataTransfer.setData("text", ev.target.id);
ev.dataTransfer.effectAllowed = "move";
}
function dropHandler(ev) {
log(`drop: effectAllowed = ${ev.dataTransfer.effectAllowed}`);
ev.preventDefault();
// Get the id of the target and add the element to the target's 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());
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-datatransfer-effectallowed-dev |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
effectAllowed |
3 | 12 | 3.5 | ≤12.1 | 4 | 18 | 4 | ≤12.1 | 3.2 | 1.0 | ≤37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/API/DataTransfer/effectAllowed