Operaciones de pegar y copiar HTML en AIR

Adobe AIR 1.0 y posterior

El entorno HTML en Adobe AIR proporciona su propia serie de eventos y comportamiento predeterminado para copiar y pegar. solo el código que se ejecute en el entorno limitado de la aplicación tiene acceso directo al portapapeles del sistema a través del objeto Clipboard.generalClipboard de AIR. El código JavaScript en un entorno limitado ajeno a la aplicación tiene acceso al portapapeles a través del objeto de evento distribuido como respuesta a uno de los eventos de copiar o pegar distribuidos por un elemento de un documento HTML.

Entre los eventos de copiar y pegar se encuentran: copy , cut y paste . El objeto distribuido para estos eventos proporciona acceso al portapapeles a través de la propiedad clipboardData .

Comportamiento predeterminado

De forma predeterminada, AIR copia elementos seleccionados como respuesta al comando de copiar, que se puede generar mediante un método abreviado de teclado o un menú contextual. En las regiones editables AIR corta texto como respuesta al comando de cortar o pega texto en el lugar seleccionado como respuesta al comando de pegar.

Para impedir que se produzca el comportamiento predeterminado, el controlador de eventos puede llamar al método preventDefault() del objeto de evento distribuido.

Uso de la propiedad clipboardData del objeto de evento

La propiedad clipboardData del objeto de evento distribuido como resultado de uno de los eventos de copiar o pegar permite leer y escribir datos en el portapapeles.

Para escribir en el portapapeles al controlar un evento de copiar o cortar, utilice el método setData() del objeto clipboardData , pasando los datos a copiar y el tipo MIME:

function customCopy(event){ 
    event.clipboardData.setData("text/plain", "A copied string."); 
}

Para tener acceso a los datos que se pegan se puede utilizar el método getData() del objeto clipboardData , pasando el tipo MIME del formato de los datos. Los formatos disponibles los notifica la propiedad types .

function customPaste(event){ 
    var pastedData = event.clipboardData("text/plain"); 
}

Solo se tiene acceso al método getData() y a la propiedad types en el objeto de evento distribuido por el evento paste .

El siguiente ejemplo ilustra cómo suprimir el comportamiento predeterminado de copiar y pegar en una página HTML. El controlador de eventos copy pone el texto copiado en cursiva y lo copia en el portapapeles como texto en formato HTML. El controlador de eventos cut copia los datos seleccionados en el portapapeles y los borra del documento. El controlador de eventos paste inserta el contenido del portapapeles en formato HTML y aplica el estilo negrita al texto insertado.

<html> 
<head> 
    <title>Copy and Paste</title>             
    <script language="javascript" type="text/javascript"> 
        function onCopy(event){ 
            var selection = window.getSelection(); 
            event.clipboardData.setData("text/html","<i>" + selection + "</i>"); 
            event.preventDefault(); 
        } 
 
        function onCut(event){ 
             var selection = window.getSelection(); 
             event.clipboardData.setData("text/html","<i>" + selection + "</i>"); 
             var range = selection.getRangeAt(0); 
             range.extractContents(); 
             
            event.preventDefault(); 
        } 
 
        function onPaste(event){ 
            var insertion = document.createElement("b"); 
            insertion.innerHTML = event.clipboardData.getData("text/html"); 
             var selection = window.getSelection(); 
             var range = selection.getRangeAt(0); 
             range.insertNode(insertion); 
            event.preventDefault(); 
        } 
    </script> 
</head> 
<body onCopy="onCopy(event)" 
     onPaste="onPaste(event)" 
     onCut="onCut(event)"> 
<p>Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium  
doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore  
veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam 
voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur  
magni dolores eos qui ratione voluptatem sequi nesciunt.</p> 
</body> 
</html>