IE와 FF에서 모두 작동하는 클립보드

Posted by Naveen
2007. 5. 4. 17:56 IT Life/Programming
반응형
혹시나 필요한 사람있으면 마음대로 가져다 쓰셔도 됩니다.
인터넷에 돌아다니는 소스라서.. ㅎㅎ

// IE와 FF에서 모두 작동하는 클립보드 복사
// FF에서는 about:config 에 들어가 Signed.applets.codebase_principal_support 값을 true로 변경해야 함

function clip_copy(meintext) {
  if (window.clipboardData) {
    window.clipboardData.setData("Text", meintext);
  } else if (window.netscape) {
    netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect');
    var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
    if (!clip) return;
    var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
    if (!trans) return;
    trans.addDataFlavor('text/unicode');
    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 (!clip) return false;
    clip.setData(trans,null,clipid.kGlobalClipboard);
  }


}

// IE와 FF에서 모두 작동하는 클립보드 붙여넣기
// FF에서는 about:config 에 들어가 Signed.applets.codebase_principal_support 값을 true로 변경해야 함

 function clip_paste() {
  var chec=document.board_write;
  var clip_data;
  if (window.clipboardData) {
    clip_data = window.clipboardData.getData("Text"); // 클립보드 복사
  } else if (window.netscape) {
    netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
    var clip = Components.classes["@mozilla.org/widget/clipboard;1"].createInstance(Components.interfaces.nsIClipboard);
    if (!clip) return;
    var trans = Components.classes["@mozilla.org/widget/transferable;1"].createInstance(Components.interfaces.nsITransferable);
    if (!trans) return;
    trans.addDataFlavor("text/unicode");
    clip.getData(trans, clip.kGlobalClipboard);
    var str = new Object();
    var strLength = new Object();
    trans.getTransferData("text/unicode", str, strLength);
    if(str) str = str.value.QueryInterface(Components.interfaces.nsISupportsString);
    else return;
    if(str) clip_data = str.data.substring(0, strLength.value / 2);
  }
  return clip_data;
}

반응형