2012-03-02 15 views
23

Actualmente estoy trabajando en un proyecto en el trabajo utilizando la API de arrastrar y soltar de HTML5 para proporcionar una funcionalidad adicional que incluye arrastrar elementos dentro y fuera de los navegadores. Actualmente me encuentro con problemas que son específicos de Chrome (de lo contrario solo se prueban en Firefox, que funciona como se esperaba).HTML5 Arrastrar y soltar getData() solo funciona en el evento de soltar en Chrome?

El problema es que no puedo utilizar el método event.dataTransfer.getData(type) para devolver los datos establecidos en el evento dragstart en cualquier evento, excepto el caso drop.

puse el evento como tal, después de unirse al evento dragstart (que se dispara):

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

Luego, en el caso de drop, puedo conseguir la multa datos.

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

Sin embargo, no puede utilizar el mismo método que el anterior con respecto a otros eventos (tales como dragover). Incluso si trato de usar el método anterior en la línea después de llamar al setData() (es decir, en la devolución de llamada dragstart), aún así devolverá undefined.

Así, en Chrome, el tema es que getData en Chrome siempre devolverá undefined, excepto dentro de la devolución de llamada drop evento. (En Firefox, puedo obtener con éxito los datos correctos.)

Si tiene la referencia al objeto dataTransfer del mismo elemento de arrastre, ¿por qué no podría obtener los datos hasta que se descarten?

Sólo me preguntaba:

  • alguien ha tenido este problema con Chrome antes?
  • ¿Qué soluciones hay?
  • ¿O es algo que Chrome debe corregir?

Recursos: Specification for HTML5 drag and drop.

+0

[Este informe de error] (http://code.google.com/p/chromium/issues/detail?id=94023) parece relacionado. – pimvdb

+0

posible duplicado de [HTML5 DnD dataTransfer setData o getData no funciona en todos los navegadores excepto Firefox] (http://stackoverflow.com/questions/11927309/html5-dnd-datatransfer-setdata-or-getdata-not-working-in- every-browser-except-fi) – broofa

Respuesta

21

WebKit, y por lo tanto, Chrome, es bastante restrictiva sobre cuándo puede llamar getData. No puedes hacerlo dentro de dragstart or dragover. Creo que this is the canonical bug.

+2

Aún no funciona en chrome. La versión 48 – Lombas

+0

@Lombas debería estar funcionando, ya que el estado del error dice RESOLVED FIJO a partir de 2013-03-22 –

1

referencia a this answer:

Los datos sólo está disponible en caída, esta es una característica de seguridad desde un sitio web podría apoderarse de datos cuando le toca estar arrastrando algo a través de la página web.

Cuestiones relacionadas