Подтвердить что ты не робот

HTML5 Drag and Drop getData() работает только с событием drop в Chrome?

В настоящее время я работаю над проектом, работающим с использованием API перетаскивания HTML5, чтобы обеспечить дополнительную функциональность, включая перетаскивание элементов в браузерах и из них. В настоящее время я сталкиваюсь с проблемами, характерными для Chrome (в противном случае они проверяются только в Firefox, который работает так, как ожидалось).

Проблема заключается в том, что я не могу использовать метод event.dataTransfer.getData(type) для возврата набора данных в событие dragstart в любые события, кроме события drop.

Я устанавливаю событие таким образом, после привязки к событию dragstart (которое срабатывает):

event.dataTransfer.setData('text/plain', "some string")

Затем в событии drop я могу получить данные в порядке.

event.dataTransfer.getData('text/plain')

Однако я не могу использовать тот же метод, что и выше, для любых других событий (например, dragover). Даже если я попытаюсь использовать вышеупомянутый метод в строке после вызова setData() (т.е. В обратном вызове dragstart), он все равно вернет undefined.

Итак, в Chrome проблема в том, что getData в Chrome всегда будет возвращать undefined, кроме как в обратном вызове события drop. (В Firefox я могу успешно получить правильные данные.)

Если у вас есть ссылка на объект dataTransfer одного и того же элемента перетаскивания, почему вы не сможете получить данные до тех пор, пока они не будут удалены?

Просто интересно:

  • У кого-то были проблемы с Chrome раньше?
  • Какие обходные пути существуют?
  • Или, нужно ли исправлять Chrome?

Ресурсы: Спецификация для перетаскивания HTML5.

4b9b3361

Ответ 2

Ссылка этого ответа:

Данные доступны только при удалении, это функция безопасности, поскольку веб-сайт может захватывать данные, когда вы перетаскиваете что-то на веб-странице.