2012-03-02 12 views
23

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.

+0

[Ten raport o błędzie] (http://code.google.com/p/chromium/issues/detail?id=94023) jest powiązany. – pimvdb

+0

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

Odpowiedz

21

WebKit, a więc Chrome, jest dość restrykcyjna, kiedy można zadzwonić getData. Nie możesz tego zrobić wewnątrz dragstart or dragover. Myślę, że this is the canonical bug.

+2

Nadal nie działa w chrome. Wersja 48 – Lombas

+0

@Lombas powinno działać, ponieważ status błędu mówi RESOLVED FIXED z dnia 2013-03-22 –

1

Odwoływanie this answer:

Dane są dostępne tylko na spadku, jest to funkcja zabezpieczeń, ponieważ strona internetowa mogła chwycić danych, gdy zdarzy ci się być przeciąganie czegoś po drugiej stronie.

Powiązane problemy