Arrastrar datos dentro de un elemento HTML

Adobe AIR 1.0 y posterior

El comportamiento predeterminado solo permite arrastrar texto a las regiones editables de la página. Para especificar que un elemento y sus elementos secundarios sean editables, incluya el atributo contenteditable en la etiqueta inicial del elemento. Un documento entero también puede transformarse en editable si se define la propiedad designMode del objeto de documento en "on" .

Se puede permitir otro comportamiento de arrastrar hacia dentro en una página si se controlan los eventos dragenter , dragover y drop para cualquier elemento que acepte datos arrastrados.

Activación de arrastrar hacia dentro

Para controlar el gesto de arrastrar hacia dentro, primero hay que cancelar el comportamiento predeterminado. Detecte si hay eventos dragenter y dragover en cualquiera de los elementos HTML que desee utilizar como destino. En los controladores de estos eventos, llame al método preventDefault() del objeto de evento distribuido. La cancelación del comportamiento predeterminado permite colocar datos arrastrados en las regiones no editables.

Obtención de los datos colocados

Se puede tener acceso a los datos colocados en el controlador del evento ondrop :

function doDrop(event){ 
    droppedText = event.dataTransfer.getData("text/plain"); 
}

Utilice el método dataTransfer.getData() para leer los datos y ponerlos en el portapapeles, pasando el tipo MIME del formato de datos a leerse. Para averiguar qué formatos de datos están disponibles, utilice la propiedad types del objeto dataTransfer . El conjunto types contiene la cadena de tipo MIME de cada formato disponible.

Cuando cancela el comportamiento predeterminado en los eventos dragenter o dragover, usted queda responsable de introducir los datos colocados en el lugar correspondiente del documento. No existe ninguna API que convierta una posición del ratón en posición de inserción en un elemento. Esta limitación puede dificultar la implementación de gestos de arrastrar tipo inserción.