본문 바로가기

Web/Javascript

클립보드 Clipboard

http://www.krikkit.net/howto_javascript_copy_clipboard.html 에서 퍼왔습니다.
핀란드어인지 -_-;; 주석이 쓸모가 없는게 좀 아쉽군요..

<script language="javascript" type="text/javascript"><!--
function copy_clip(meintext) {
    if (window.clipboardData) { // IE일 경우
        window.clipboardData.setData("Text", meintext);
    } else if (window.netscape) { // NS일 경우
        // you have to sign the code to enable this, or see notes below
        netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');

        // maak een interface naar het clipboard
        var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
        if (!clip) return;

        // maak een transferable
        var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
        if (!trans) return;

        // specificeer wat voor soort data we op willen halen; text in dit geval
        trans.addDataFlavor('text/unicode');

        // om de data uit de transferable te halen hebben we 2 nieuwe objecten nodig om het in op te slaan
        var str = new Object();
        var len = new Object();

        var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);

        var copytext = meintext;    // 로컬변수에 복사
        str.data = copytext;

        trans.setTransferData("text/unicode",str,copytext.length*2);
        var clipid = Components.interfaces.nsIClipboard;
        if (!clipid) return false;

        clip.setData(trans,null,clipid.kGlobalClipboard);
    }
    alert("Following info was copied to your clipboard:\n\n" + meintext);
    return false;
}
//-->
</script>

호출할때는 아래와 같이 쓰라고 하는군요.
<span onclick='return copy_clip("this is your personal text")'>

IE쪽은 window.clipboardData.setData 를 써서 간단히 해결하는데, NS쪽은 XPCOM을 호출하느라 좀 코드가 거시기하군요.. (파이어폭스에서 실행시켜보니 보안 경고창이 뜨면서.. 허락해야 코드가 동작합니다 -_-; ) 위와 비슷한 코드는 mozilla.org 의 클립보드 쪽에서도 찾을 수 있습니다.

기타 IE쪽에서 클립보드에 갖다 박는 방법이라면.. 아래와 같은 방법이 있겠습니다.
<script><!--
function setData ( obj ) {
var buf = document.getElementById('buf');
buf.value = obj.innerHTML;
var Range = buf.createTextRange ();
Range.execCommand ("Copy");
}
//--></script>
<span onclick=" setData (this) "> 가갸거겨고교구규그기 </span>
<!-- 버퍼로 사용될 숨겨진 textarea -->
<textarea id='buf' style='display: none;'>

숨겨진 textarea를 사용하여 내용을 복사한 다음, 선택영역 개체를 생성해서 Copy 명령을 실행시키는 예제입니다. 많이들 쓰시더군요.. (블로그의 PermaLink 카피쪽에서)

'Web > Javascript' 카테고리의 다른 글

DOM 처리관련 오류 사항  (0) 2013.09.26
JS number_format function에서 처리하기  (0) 2013.09.26
클립 보드로 복사  (0) 2013.09.26
날짜 형식 검사  (0) 2013.09.26
replace 주의점  (0) 2013.09.26