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

В настоящее время я работаю над проектом, используя HTML5 Drag and Drop API для предоставления дополнительных функций, включая перетаскивание элементов в браузеры и из них. В настоящее время я сталкиваюсь с проблемами, характерными для 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.

25
задан Zearin 6 January 2015 в 22:05
поделиться