[英]Copy to clipboard in Firefox extension not working
我想編寫一個Firefox擴展,將其復制到剪貼板,並使用選定的text參數執行一個外部程序。 我發現此鏈接MDN使用剪貼板復制剪貼板,但是不起作用。 當我嘗試使用cfx run執行時,總是收到此錯誤消息
(c:\\ Works \\ Firefox \\ addon-sdk-1.17)c:\\ Works \\ Firefox \\ ExternalOpener> cfx運行
來自文件c:\\ Works \\ Firefox \\ ExternalOpener \\ lib \\ main.js的以下行:11:const gClipboardHelper = Components.classes [“ @ mozilla.org/widget/clipboard helper; 1”]。getService(Components.interfaces。 nsIClipboardHelper); 使用“組件”訪問Chrome授權。 為此,您需要添加類似於以下內容的行:
const {Cc,Ci} = require(“ chrome”);
然后,您可以使用從“ chrome”模塊(“ Cc”,“ Ci”,“ Cm”,“ Cr”和“ Cu”表示“類”,“接口”,“管理器”,‘結果’和‘utils的’屬性,分別,而且
components
用於Components
對象本身)。
這是我的main.js
var contextMenu = require("sdk/context-menu");
var menuItem = contextMenu.Item({
label: "Open in External",
context: contextMenu.SelectionContext(),
contentScript: 'self.on("click", function () {' +
' var text = window.getSelection().toString();' +
' self.postMessage(text);' +
'});',
onMessage: function (selectionText) {
console.log(selectionText);
const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboardhelper;1"].getService(Components.interfaces.nsIClipboardHelper);
gClipboardHelper.copyString(selectionText);
}
});
歡迎任何想法,關於剪貼板復制或帶有參數的外部應用程序執行...
謝謝
該文檔屬於基於XUL的插件,而您編寫的插件是基於Addon-SDK的插件 。
為了在基於sdk的插件中使用Component.classes
和Component.interfaces
,您需要Chrome Authority 。
該錯誤告訴您的是,未定義Components.classes和Components.interfaces。 為了使用,您必須首先要求它們:
const {Cc, Ci} = require("chrome");
然后以這種方式使用它們:
const gClipboardHelper =Cc["@mozilla.org/widget/clipboardhelper;1"].getService(Ci.nsIClipboardHelper);
gClipboardHelper.copyString(selectionText);
Cc代表Component.classes
, Ci代表Components.interfaces
。 請閱讀有關Chrome授權的文檔,以了解它們和其他屬性;)
我認為這正是您想要的: https : //developer.mozilla.org/zh-CN/Add-ons/SDK/High-Level_APIs/clipboard
您可以像這樣使用它:
var clipboard = require("sdk/clipboard");
clipboard.set("Lorem ipsum dolor sit amet");
var contents = clipboard.get();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.