Spec-Zone.ru › Web APIs

HTMLElement: событие drop

Базовая Широко поддерживается

Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.

  • Узнать больше
  • Полная совместимость
  • Отправить отзыв

Событие drop срабатывает, когда элемент или выделенный текст опускаются на допустимую цель перемещения. Чтобы обеспечить, что событие drop всегда срабатывает как ожидается, вы всегда должны включать вызов preventDefault() в части кода, которая обрабатывает событие dragover.

Это событие может быть отменено и может распространяться до объектов Document и Window.

Синтаксис

Используйте имя события в методах, таких как addEventListener(), или установите свойство обработчика событий.

addEventListener("drop", (event) => {});

ondrop = (event) => {};

Тип события

A DragEvent. Наследуется от Event.

Событие UIEvent MouseEvent DragEvent

Свойства события

Помимо перечисленных ниже свойств, доступны свойства из родительского интерфейса Event.

DragEvent.dataTransfer Только для чтения

Данные, передаваемые во время взаимодействия перетаскивания и помещения.

Примеры

Пример минимального перетаскивания и помещения

В этом примере есть перетаскиваемый элемент внутри контейнера. Попробуйте взять элемент, перетащить его над другим контейнером и отпустить.

Мы используем три обработчика событий:

  • в обработчике события dragstart, мы получаем ссылку на элемент, который пользователь перетащил
  • в обработчике события dragover для целевого контейнера, мы вызываем event.preventDefault(), что позволяет ему получать события drop.
  • в обработчике события drop для зоны размещения, мы обрабатываем перемещение перетаскиваемого элемента из исходного контейнера в зону размещения.

Для более полного примера перетаскивания и помещения см. страницу события drag.

HTML

<div class="dropzone">
  <div id="draggable" draggable="true">This div is draggable</div>
</div>
<div class="dropzone" id="drop-target"></div>

CSS

body {
  /* Prevent the user from selecting text in the example */
  user-select: none;
}

#draggable {
  text-align: center;
  background: white;
}

.dropzone {
  width: 200px;
  height: 20px;
  background: blueviolet;
  margin: 10px;
  padding: 10px;
}

JavaScript

let dragged = null;

const source = document.getElementById("draggable");
source.addEventListener("dragstart", (event) => {
  // store a ref. on the dragged elem
  dragged = event.target;
});

const target = document.getElementById("drop-target");
target.addEventListener("dragover", (event) => {
  // prevent default to allow drop
  event.preventDefault();
});

target.addEventListener("drop", (event) => {
  // prevent default action (open as a link for some elements)
  event.preventDefault();
  // move dragged element to the selected drop target
  if (event.target.className === "dropzone") {
    dragged.parentNode.removeChild(dragged);
    event.target.appendChild(dragged);
  }
});

Результат

Спецификации

Спецификация
HTML
# ix-handler-ondrop
HTML
# event-dnd-drop

Совместимость с браузерами

Рабочий стол Мобильные
Chrome Edge Firefox Opera Safari Chrome Android Firefox для Android Opera Android Safari на iOS Samsung Internet WebView Android
drop_event 1 12 9 12 3.1 18 9 12 2 1.0 4.4

См. также

  • Другие события перетаскивания и помещения:

    • drag
    • dragstart
    • dragend
    • dragover
    • dragenter
    • dragleave

© 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/HTMLElement/drop_event

Spec-Zone.ru

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