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.
[Questo bug report] (http://code.google.com/p/chromium/issues/detail?id=94023) sembra correlata. – pimvdb
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