AIR의 HTML 복사하여 붙여넣기

Adobe AIR 1.0 이상

Adobe AIR의 HTML 환경에서는 복사하여 붙여넣을 수 있도록 자체 이벤트 및 기본 비헤이비어 집합을 제공합니다. 응용 프로그램 샌드박스에서 실행되는 코드만 AIR Clipboard.generalClipboard 객체를 통해 시스템 클립보드에 직접 액세스할 수 있습니다. 비 응용 프로그램 샌드박스의 JavaScript 코드는 HTML 문서의 한 요소에서 전달한 copy 또는 paste 이벤트 중 하나에 응답하여 전달된 이벤트 객체를 통해 클립보드에 액세스할 수 있습니다.

복사하여 붙여넣기 이벤트는 copy, cutpaste입니다. 이러한 이벤트에 대해 전달된 객체는 clipboardData 속성을 통해 클립보드에 대한 액세스를 제공합니다.

기본 비헤이비어

기본적으로 AIR은 키보드 단축키나 컨텍스트 메뉴 중 하나로 생성될 수 있는 복사 명령에 응답하여 선택한 항목을 복사합니다. 편집 가능한 영역 내에서 AIR은 자르기 명령에 응답하여 텍스트를 자르거나 붙여넣기 명령에 응답하여 커서나 선택 영역에 텍스트를 붙여넣습니다.

기본 비헤이비어를 차단하기 위해 이벤트 핸들러는 전달된 이벤트 객체의 preventDefault() 메서드를 호출할 수 있습니다.

이벤트 객체의 clipboardData 속성 사용

copy 또는 paste 이벤트 중 하나의 결과로 전달된 이벤트 객체의 clipboardData 속성을 사용하여 클립보드 데이터를 읽고 쓸 수 있습니다.

copy 또는 cut 이벤트를 처리할 때 클립보드에 기록하려면 복사할 데이터와 MIME 유형을 전달하여 clipboardData 객체의 setData() 메서드를 사용합니다.

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

붙여넣는 데이터에 액세스하기 위해 데이터 형식의 MIME 유형을 전달하여 clipboardData 객체의 getData() 메서드를 사용할 수 있습니다. 사용할 수 있는 형식은 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>