인터넷정보

클립보드로 텍스트 복사하기

알 수 없는 사용자 2007. 10. 13. 11:48

function copyContent(str)
{
    if (document.selection)
    {
        bResult = window.clipboardData.setData("Text",str);
        if (bResult) alert!!('클립보드에 저장되었습니다.');
    } else {
        str = encodeforFlash(str);
        var flashcopier = 'flashcopier';
        if(!document.getElementById(flashcopier)) {
            var divholder = document.createElement('div');
            divholder.id = flashcopier;
            document.body.appendChild(divholder);
        }
        document.getElementById(flashcopier).innerHTML = '';
        var divinfo = '<embed src="_clipboard.swf" FlashVars="clipboard='+str+'" width="1" height="1" type="application/x-shockwave-flash"></embed>';
        document.getElementById(flashcopier).innerHTML = divinfo;
        alert!!('클립보드에 저장되었습니다.');
    }
};


function encodeforFlash(str)
{
    var SAFECHARS = "0123456789" +
                  "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +
                  "abcdefghijklmnopqrstuvwxyz" +
                  "-_.!~*'()";

    var HEX = "0123456789ABCDEF";

    var plaintext = str;
    var encoded = "";
    for (var i = 0; i < plaintext.length; i++ ) {
        var ch = plaintext.charAt(i);
        if (ch == " ") {
            encoded += "+";
        } else if (SAFECHARS.indexOf(ch) != -1) {
            encoded += ch;
        } else {
            var charCode = ch.charCodeAt(0);
            if (charCode > 255) {
                encoded += ch;
            } else {
                encoded += "%";
                encoded += HEX.charAt((charCode >> 4) & 0xF);
                encoded += HEX.charAt(charCode & 0xF);
            }
        }
    }
    return encoded;
};


사용법은

    copyContent('복사할내용');

이런식으로 복사될 내용을 넘겨주면서 호출해주면 되는겁니다.
(onclick 이나... 링크나...함수내 호출이나...아무렇게나!)

_clipboard.swf 화일은 아래 첨부파일 다운받으세요.




http://www.alik.info/

반응형