2011-09-19 4 views
3

버튼을 클릭하여 <div id="content"> 안의 텍스트를 클립 보드에 복사하고 싶습니다. 방법이 있나요 자바 스크립트 또는 jquery,하지만 플러그인을 사용하지 않고. 파이어 폭스에서만 크로스 브라우저가 필요하지 않습니다.클립 보드에 텍스트 복사, 파이어 폭스 전용, 플러그인 없음

$('#copy').click(function(){ 
    var cont = $('#content').text(); 
    //how to copy cont to clipboar? 
}); 
+0

가능한 중복 [자바 스크립트 클립 보드로 복사하는 방법?] (http://stackoverflow.com/questions/400212/how-to 매튜 Flaschen에

감사합니다 -copy-to-clipboard-in-javascript) – peirix

답변

0

아니요, HTML5 이전에는 방법이 없습니다. 그러나 그 구현은 까다 롭습니다. 모든 플러그인은 플래시를 사용하여 클립 보드로 복사합니다. zClip http://www.steamdev.com/zclip/을 사용할 수 있습니다.

gion_13은 링크가있는 기사에서 확인할 수있는 것처럼 플래시가 필요하다고 말한 바가 있습니다. 따라서 작은 플러그인을 사용하여 클립 보드에 복사해도 아무런 해가되지 않습니다.

1

Mozilla는 2012 년 11 월경까지 작업 한 후 업데이트로 파괴했습니다. 이제 해결 방법이 있습니다. 복사 할 내용이있는 새 창을 엽니 다. DataURL 아이디어 (https://stackoverflow.com/a/3665147/1120146)

/** 
* To use the clipboard from Mozilla/NS/Firefox: 
* 
* Clipboard access works only up to Firefox 14 :-((thanks to those security fanatics) 
* 
* Solution for later versions: Window pops up with text inside (data url) 
* 
* In "about:config" : 
*  set signed.applets.codebase_principal_support = true! 
* 
* @param text: The text which shold be copied to clipboard 
* @param fallbackContentType: The content type of the text, if clipboard access 
*        doesn't work, i.e. "text/csv" 
*        default: text/plain 
*/ 

function toClipboard(text, fallbackContentType) { 
    var success = false; 
    if (window.clipboardData) { 
      // the IE-manier 
     window.clipboardData.setData("Text", text); 
     success = true; 
    } 
    else if (window.netscape) { 

     if(netscape.security.PrivilegeManager != undefined) { 
      netscape.security.PrivilegeManager.enablePrivilege('UniversalXPConnect'); 

      var clip = Components.classes['@mozilla.org/widget/clipboard;1'].getService(Components.interfaces.nsIClipboard); 
      var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable); 

      if(typeof(clip) == "object" && typeof(trans) == "object") { 
       trans.addDataFlavor('text/unicode'); 

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

       stingSupporter.data = text; 
       trans.setTransferData("text/unicode", stingSupporter, text.length * 2); 
       var clipid = Components.interfaces.nsIClipboard; 
       clip.setData(trans, null, clipid.kGlobalClipboard); 

       success = true; 
      } 
     } 
     else { // Firefox > v15 
      // Create Data URL 
      if(fallbackContentType == undefined) fallbackContentType = "text/plain"; 

      var url = "data:"+ fallbackContentType +"," + encodeURIComponent(text); 
      window.open(url); 
     } 
    } 
    return success; 
} 
관련 문제