2012-03-02 10 views
23

Attualmente sto lavorando a un progetto al lavoro utilizzando l'API di trascinamento e rilascio HTML5 per fornire funzionalità aggiuntive tra cui il trascinamento di elementi all'interno e all'esterno dei browser. Attualmente sto riscontrando problemi specifici di Chrome (altrimenti testato solo in Firefox, che funziona come previsto).HTML5 Drag and Drop getData() funziona solo su evento di rilascio in Chrome?

Il problema è che non riesco a utilizzare il metodo event.dataTransfer.getData(type) per restituire il set di dati sull'evento dragstart in tutti gli eventi, tranne l'evento drop.

ho impostato l'evento in questo modo, dopo il legame con l'evento dragstart (che fa fuoco):

event.dataTransfer.setData('text/plain', "some string") 

Poi, nel caso drop, posso ottenere la multa di dati.

event.dataTransfer.getData('text/plain') 

Tuttavia non posso usare lo stesso metodo come sopra su altri eventi (come dragover). Anche se provo a utilizzare il metodo sopra riportato sulla linea dopo aver chiamato setData() (ad esempio, nel callback dragstart), restituirà comunque undefined.

Quindi, in Chrome, il problema è che getData in Chrome restituirà sempre undefined, tranne all'interno della chiamata all'evento drop. (In Firefox, posso ottenere correttamente i dati corretti.)

Se si ha il riferimento all'oggetto dataTransfer dello stesso elemento di trascinamento, perché non si dovrebbe essere in grado di ottenere i dati finché non vengono rilasciati?

Basta chiedersi:

  • qualcuno ha avuto questo problema con Chrome prima?
  • Quali soluzioni alternative esistono?
  • Oppure, è qualcosa che Chrome deve risolvere?

Risorse: Specification for HTML5 drag and drop.

+0

[Questo bug report] (http://code.google.com/p/chromium/issues/detail?id=94023) sembra correlata. – pimvdb

+0

possibile duplicato di [HTML5 DnD dataTransfer setData o getData non funziona in tutti i browser tranne Firefox] (http://stackoverflow.com/questions/11927309/html5-dnd-datatransfer-setdata-or-getdata-not-working-in- every-browser-except-fi) – broofa

risposta

21

WebKit, e quindi Chrome, è alquanto restrittiva quando si può chiamare getData. Non ti è permesso farlo all'interno di dragstart or dragover. Penso che this is the canonical bug.

+2

Ancora non funziona in chrome. Versione 48 – Lombas

+0

@Lombas dovrebbe funzionare, dal momento che lo stato del bug dice RISOLTO FISSO dal 2013-03-22 –

1

Riferimento this answer:

I dati sono disponibili solo su goccia, questa è una caratteristica di sicurezza dal momento che un sito web potrebbe afferrare i dati quando vi capita di essere trascinando qualcosa attraverso la pagina web.