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


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

소스코드

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.라고 나와요. 뭐가잘못된거죠? 어떻게하면 될까요?

  • 2016년 02월 24일에 작성됨

조회수 563


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>

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

  • 2016년 02월 24일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close