HTML5 Drag and Drop getData () работает только при событии сброса в Chrome? - PullRequest
25 голосов
/ 02 марта 2012

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

Проблема в том, что я не могу использовать метод event.dataTransfer.getData(type) для возврата набора данных в *Событие 1004 * в любых событиях, кроме события 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.

Ответы [ 2 ]

22 голосов
/ 02 марта 2012

WebKit, и, следовательно, Chrome, весьма ограничены, когда вы можете звонить getData.Вам не разрешено делать это внутри dragstart или dragover.Я думаю это каноническая ошибка .

3 голосов
/ 28 января 2017

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...