Копирование и вставка HTML в AIR

Adobe AIR 1.0 и более поздних версий

Среда HTML в Adobe AIR имеет собственный набор событий и обеспечивает поведение по умолчанию для копирования и вставки. Доступ к системному буферу обмена имеет только код, выполняемый в изолированной программной среде. Доступ осуществляется напрямую через объект AIR Clipboard.generalClipboard . Код JavaScript в изолированной программной среде вне приложения получает доступ к буферу обмена через объект события, отправляемый в ответ на одно из событий копирования или вставки, которые, в свою очередь, отправляются элементом HTML-документа.

Существуют следующие события копирования и вставки: copy , cut и paste . Объект, отправляемый в ответ на эти события, обеспечивает доступ к буферу обмена через свойство clipboardData .

Поведение по умолчанию

По умолчанию среда AIR копирует выделенные элементы в ответ на команду copy, которая может отправляться с клавиатуры или из контекстного меню. В редактируемых областях в ответ на команду cut AIR вырезает текст, а в ответ на команду paste — вставляет текст в точку расположения курсора или вместо выделенного текста.

Для отмены поведения по умолчанию обработчик события может вызывать метод preventDefault() отправляемого объекта события.

Использования свойства clipboardData объекта события

Свойство clipboardData объекта события отправляется в результате события copy или paste и позволяет считывать и записывать данные в буфер обмена.

Для записи данных в буфер обмена при обработке события copy или cut используйте метод setData() объекта clipboardData , передающего копируемые данные и MIME-тип:

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

Для доступа к вставляемым данным может использоваться метод getData() объекта clipboardData , передающий MIME-тип формата данных. Доступные форматы содержатся в свойстве types .

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

Доступ к методу getData() и свойству types возможен только из объекта события, отправляемого событием paste .

В примере ниже показано, как переопределить поведение копирования и вставки по умолчанию на HTML-странице. Обработчик события copy выделяет копируемый текст курсивом и копирует его в буфер обмена в виде HTML-текста. Обработчик события cut копирует выделенные данные в буфер обмена и удаляет их из документа. Обработчик события paste вставляет содержимое буфера обмена в виде HTML и выделяет его полужирным шрифтом.

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