javascript - Firefox 扩展从内容脚本调用插件功能

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

我想从内容脚本运行插件函数 [main.js]。我阅读了 firefox 文档,但它对我不起作用。这是关于脚本之间通信的官方文档 https://developer.mozilla.org/en-US/Add-ons/SDK/Guides/Content_Scripts/using_port

这是我的 main.js 代码

var tabs = require("sdk/tabs");
var data = require("sdk/self").data;

var pageMod = require("sdk/page-mod");
pageMod.PageMod({
  include: "http://mydomain/x.html",
  contentScriptFile: data.url("listen.js")
});

self.port.on("myAddonMessage", function(myAddonMessagePayload) {
  console.log("working");
});

这是我的 listen.js 内容脚本

var myContentScriptMessagePayload="hi"; 
self.port.emit("myContentScriptMessage", myContentScriptMessagePayload);

实际上我期待 console.log("working");这个输出。但它不起作用。有人可以帮助我吗?我在这里真的很困惑。我实际上想从 listen.js 调用 main.js 函数。

最佳答案

main.js 没有 self.port,content-scripts 有。在 main.js 中,您需要将端口与启动内容脚本的任何内容一起使用。例如。 PageMod documentation还有更多。

var data = require("sdk/self").data;

var pageMod = require("sdk/page-mod");
pageMod.PageMod({
  include: "http://mydomain/x.html",
  contentScriptFile: data.url("listen.js"),
  onAttach: function(worker) {
    worker.port.on("myAddonMessage", function(myAddonMessagePayload) {
      console.log("working");
    });
  }
});

关于javascript - Firefox 扩展从内容脚本调用插件功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24585417/

相关文章:

javascript - 钛合金静态和动态绘图/绘画

linux - 在 Tinycore (Docker) 上安装 Firefox

html - Firefox adblock 阻止了我的 CSS 样式

javascript - 如何在 Firefox 扩展(附加组件)中请求文件?

javascript - `1..something` 在 JavaScript 中是什么意思?

javascript - HighCharts 轴对齐

javascript - 使用 Javascript Loop 检测类似单选按钮的变化,然后执行代码

python - 使用 Selenium FirefoxDriver 在 Google 搜索上禁用样式

firefox - 如何隐藏 Firefox v29.0 的地址栏(导航栏)?

firefox - 将键盘快捷键添加到Firefox扩展