Copiar e colar HTML no AIR

Adobe AIR 1.0 e posterior

O ambiente HTML do Adobe AIR fornece seu próprio conjunto de eventos e comportamento padrão para copiar e colar. Apenas códigos em execução na caixa de proteção do aplicativo podem acessar a área de transferência do sistema diretamente pelo objeto do AIR Clipboard.generalClipboard . Códigos JavaScript em uma caixa de proteção de não aplicativo podem acessar a área de transferência pelo objeto de evento despachado em resposta a um dos eventos de copiar ou colar despachados por um elemento em um documento HTML.

Os eventos de copiar e colar incluem: copy , cut e paste . O objeto despachado para esses eventos fornece acesso à área de transferência pela propriedade clipboardData .

Comportamento padrão

Por padrão, o AIR copia itens selecionados em resposta ao comando de copiar, que pode ser gerado por um atalho do teclado ou um menu de contexto. Em regiões editáveis, o AIR recorta textos em resposta ao comando de recortar ou cola textos para o cursor ou seleção em resposta ao comando de colar.

Para impedir o comportamento padrão, seu manipulador de eventos pode chamar o método preventDefault() do objeto de evento despachado.

Uso da propriedade clipboardData do objeto de evento

A propriedade clipboardData do objeto de evento despachado como um resultado de um dos eventos de copiar ou colar permite que você leia e escreva dados da área de transferência.

Para escrever na área de transferência ao manipular um evento de copiar ou recortar, use o método setData() do objeto clipboardData , transmitindo os dados para copiar e o tipo MIME:

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

Para acessar os dados que estão sendo colados, você pode usar o método getData() do objeto clipboardData , transmitindo o tipo MIME do formato de dados. Os formatos disponíveis são relatados pela propriedade types .

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

O método getData() e a propriedade types podem apenas ser acessados no objeto de evento despachado pelo evento paste .

O exemplo a seguir ilustra como substituir o comportamento de copiar e colar padrão em uma página HTML. O manipulador de eventos copy coloca em itálico o texto copiado e o copia para a área de transferência como texto HTML. O manipulador de eventos cut copia os dados selecionados para a área de transferência e os remove do documento. O manipulador paste insere o conteúdo da área de transferência como HTML e aplica um estilo na inserção como texto em negrito.

<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>