2011-11-23 22 views
1

如何使用XPCOM將剪貼板文本分配給本地變量。我只需要在Firefox中工作。請建議我使用任何插件或事件。我用Google搜索了一下,但無法找到符合我要求的文章。我聽到一些關於使用Firefox API將剪貼板數據分配到本地變量

nsIClipboardCommands 

但需要幫助如何使用它..我可以在網頁中使用這種方法嗎?

回答

2

也許你可以使用zeroclipboard實現this.Or您可以使用這些代碼:

function copyToClipboard(txt) { 
    if (window.clipboardData) { 
     window.clipboardData.clearData(); 
     window.clipboardData.setData("Text", txt); 
    } else if (navigator.userAgent.indexOf("Opera") != -1) { 
     window.location = txt; 
    } else if (window.netscape) { 
     try { 
      netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect"); 
     } catch (e) { 
      alert("please goto ’about:config’\n and set ’signed.applets.codebase_principal_support’ to ’true’"); 
     } 
     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 = txt; 
     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); 
    } 
    return true; 
} 
+0

我可以在網頁的代碼??? – Exception

+0

@ user1008575:不,只在Firefox擴展中。如果用戶改變他的偏好,它可能在網頁上工作 - 但暫時的,這個功能很快就會被移除。 –