자바스크립트에서 클립보드에 복사하는건 어떻게 하나요?
조회수 3895회
멀티 브라우저 환경에서 클립보드에 복사하게 하는 가장 좋은 방법이 뭔가요?
소스코드
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 답변
-
자동으로 클립보드에 복사되게하는건 경우에 따라서 매우 위험한 결과를 초래할수도있습니다. 그래서 대부분의 브라우저에서는 그렇게 되기 어렵게 만들어져있습니다. 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>
이런식으로 응용하시면 됩니다. 이렇게하면 클립보드 복사는 매우 안전해집니다. 왜냐면 유저가 직접 수동적으로 복사를 하니까요.
댓글 입력