javascript - 在 Firefox 扩展中复制到剪贴板不起作用

标签 javascript firefox firefox-addon firefox-addon-sdk

我想编写一个 Firefox 扩展,复制到剪贴板并使用选定的文本参数执行外部程序。 我找到了这个链接MDN Using Clipboard用于剪贴板复制,但不起作用。当我尝试使用 cfx run 执行时,我总是收到此错误消息

(c:\Works\Firefox\addon-sdk-1.17) c:\Works\Firefox\ExternalOpener>cfx run

The following lines from file c:\Works\Firefox\ExternalOpener\lib\main.js: 11: const gClipboardHelper = Components.classes["@mozilla.org/widget/clipboard helper;1"].getService(Components.interfaces.nsIClipboardHelper); use 'Components' to access chrome authority. To do so, you need to add a line somewhat like the following:

const {Cc,Ci} = require("chrome");

Then you can use any shortcuts to its properties that you import from the 'chrome' module ('Cc', 'Ci', 'Cm', 'Cr', and 'Cu' for the 'classes', 'interfaces', 'manager', 'results', and 'utils' properties, respectively. And components for Components object itself).

这是我的 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.classesComponent.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.classesCi 代表Components.interfaces。请阅读有关 Chrome Authority 的文档以了解它们和其他属性;)

关于javascript - 在 Firefox 扩展中复制到剪贴板不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27866328/

相关文章:

javascript - 在调用 PHP 函数的 AJAX 请求后提交表单时重定向页面

javascript - 运行应用程序时使用 multer 导致错误

html - 面具在 Firefox 中不起作用

javascript - 如何挂接到 Firefox 网络请求弹出窗口?

javascript - 如何在 Firefox 插件中使用来自外部 URL 的内容脚本文件

javascript - React-Native使用三元运算符动态改变 View 高度

javascript - jQuery 选择器不起作用/点击触发器未触发

Firefox-Addon:添加具有不同 URL 和建议的搜索引擎

javascript - 在 Firefox 扩展中使用 indexedDB

javascript - Components.utils.unload() 是否也卸载辅助导入?