В настоящее время я работаю над проектом, используя 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
того же перетаскиваемого элемента, то почему вы не сможете получить данные, пока он не будет удален?
Просто интересно:
Ресурсы: Спецификация перетаскивания HTML5.