DataTransfer: метод setData()
Базовая поддержка Широко распространена
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна во всех браузерах с июля 2015 года.
Метод DataTransfer.setData() устанавливает переносимые данные операции перетаскивания на указанные данные и тип. Если данные для заданного типа отсутствуют, они добавляются в конец хранилища данных перетаскивания, так что последний элемент в списке types будет новым типом. Если данные для заданного типа уже существуют, существующие данные заменяются на том же месте. То есть порядок списка types не изменяется при замене данных того же типа.
Примеры типов данных: text/plain и text/uri-list.
Синтаксис
setData(format, data)
Параметры
format-
Строка, представляющая тип переносимых данных для добавления в
DataTransfer. data-
Строка, представляющая данные для добавления в
DataTransfer.
Возвращаемое значение
None (undefined).
Примеры
Перетаскивание элемента
В этом примере мы можем перетащить элемент <p> в целевой элемент <div>.
-
В обработчике
dragstartмы используемsetData()для добавленияidэлемента<p>в объектDataTransfer. -
В обработчике
dropмы получаемidи используем его для перемещения элемента<p>в целевой элемент.
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>
<button id="reset">Reset example</button>
CSS
div {
margin: 0.5em 0;
padding: 2em;
}
#target,
#source {
border: 1px solid black;
padding: 0.5rem;
}
.dragging {
background-color: pink;
}
JavaScript
const source = document.querySelector("#source");
source.addEventListener("dragstart", (ev) => {
console.log("dragStart");
// Change the source element's background color
// to show that drag has started
ev.currentTarget.classList.add("dragging");
// Clear the drag data cache (for all formats/types)
ev.dataTransfer.clearData();
// Set the drag's format and data.
// Use the event target's id for the data
ev.dataTransfer.setData("text/plain", ev.target.id);
});
source.addEventListener("dragend", (ev) =>
ev.target.classList.remove("dragging"),
);
const target = document.querySelector("#target");
target.addEventListener("dragover", (ev) => {
console.log("dragOver");
ev.preventDefault();
});
target.addEventListener("drop", (ev) => {
console.log("Drop");
ev.preventDefault();
// Get the data, which is the id of the source element
const data = ev.dataTransfer.getData("text");
const source = document.getElementById(data);
ev.target.appendChild(source);
});
const reset = document.querySelector("#reset");
reset.addEventListener("click", () => document.location.reload());
Результат
Спецификации
| Спецификация |
|---|
| HTML # dom-datatransfer-setdata-dev |
Совместимость с браузерами
| Рабочие столы | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | WebView Android | |
setData |
3 | 12 | 3.5 | 12 | 5 | 18 | 4 | 12 | 5 | 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/setData