Spec-Zone.ru › Web APIs

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

См. также

  • Перетаскивание и размещение
  • Операции перетаскивания
  • Рекомендуемые типы перетаскивания
  • Тест DataTransfer - Вставка или перетаскивание

© 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API