자바스크립트에서 클립보드에 복사하는건 어떻게 하나요?

조회수 3414회

멀티 브라우저 환경에서 클립보드에 복사하게 하는 가장 좋은 방법이 뭔가요?

소스코드

function copyToClipboard(text) {
    if (window.clipboardData) { // Internet Explorer
        window.clipboardData.setData("Text", text);
    } else {  
        unsafeWindow.netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");  
        const clipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);  
        clipboardHelper.copyString(text);
    }
}

저는 이렇게 해봤는데 인터넷 익스플로어에서 신텍스에러가 발생해요. 그리고 파이어폭스에서는 unsafeWindow is not defined.라고 나와요. 뭐가잘못된거죠? 어떻게하면 될까요?

1 답변

  • 좋아요

    0

    싫어요
    채택 취소하기

    자동으로 클립보드에 복사되게하는건 경우에 따라서 매우 위험한 결과를 초래할수도있습니다. 그래서 대부분의 브라우저에서는 그렇게 되기 어렵게 만들어져있습니다. IE만 빼고요. 그래서 저는

    function copyToClipboard(text) {
      window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
    }
    

    프롬프트를 띄워서 사용자가 직접 Ctrl+C를 누르고 엔터를 누르게끔 유도하는 식의 편법을 이용합니다.

    <button id="demo" onclick="copyToClipboard(document.getElementById('demo').innerHTML)">This is what I want to copy</button>
    
    <script>
      function copyToClipboard(text) {
        window.prompt("Copy to clipboard: Ctrl+C, Enter", text);
      }
    </script>
    

    이런식으로 응용하시면 됩니다. 이렇게하면 클립보드 복사는 매우 안전해집니다. 왜냐면 유저가 직접 수동적으로 복사를 하니까요.

답변을 하려면 로그인이 필요합니다.

Hashcode는 개발자들을 위한 무료 QnA 사이트입니다. 계정을 생성하셔야만 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)

ᕕ( ᐛ )ᕗ
로그인이 필요합니다

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 계정을 생성하셔야만 글을 작성하실 수 있습니다.