Obecnie pracuję nad projektem w pracy przy użyciu interfejsu API przeciągania i upuszczania HTML5, aby zapewnić dodatkową funkcjonalność, w tym przeciąganie elementów do i z przeglądarek. W tej chwili napotykam na problemy związane z Chrome (w przeciwnym wypadku testowałem tylko w Firefoksie, który działa zgodnie z oczekiwaniami).HTML5 Przeciąganie i upuszczanie getData() działa tylko w przypadku upuszczania w przeglądarce Chrome?
Problem polega na tym, że nie można użyć metody event.dataTransfer.getData(type)
do zwrócenia zestawu danych w zdarzeniu dragstart
w przypadku zdarzeń z wyjątkiem zdarzenia drop
.
ustawić tak jak zdarzenie, po związaniu przypadku dragstart
(która jest wyzwalana):
event.dataTransfer.setData('text/plain', "some string")
Następnie w przypadku drop
, mogę dostać grzywnę danych.
event.dataTransfer.getData('text/plain')
Jednak nie można użyć tej samej metody, jak wyżej na wszelkich innych wydarzeń (takich jak dragover
). Nawet jeśli spróbuję i zastosuję powyższą metodę w linii po wywołaniu setData()
(tj. W wywołaniu zwrotnym), to nadal będzie zwracana undefined
.
Tak, w Chrome, problem polega na tym, że getData
w Chrome zawsze zwróci undefined
, z wyjątkiem wywołania zwrotnego zdarzenia drop
. (W Firefoksie mogę pomyślnie uzyskać prawidłowe dane.)
Jeśli masz odniesienie do obiektu dataTransfer
tego samego elementu przeciągania, to dlaczego nie możesz uzyskać danych, dopóki nie zostanie upuszczony?
prostu zastanawiasz się:
- Czy ktoś miał ten problem z Chrome przed?
- Jakie są ograniczenia?
- Czy jest to coś, co Chrome musi naprawić?
Zasoby: Specification for HTML5 drag and drop.
[Ten raport o błędzie] (http://code.google.com/p/chromium/issues/detail?id=94023) jest powiązany. – pimvdb
możliwy duplikat [HTML5 DnD dataTransfer setData lub getData nie działa we wszystkich przeglądarkach z wyjątkiem Firefox] (http://stackoverflow.com/questions/11927309/html5-dnd-datatransfer-setdata-or-getdata-not-working-in- every-browser-except-fi) – broofa