在Firefox扩展内容脚本交流(Communicating with a content scri

2019-09-18 06:28发布

我有一个Chrome扩展其执行以下操作:

chrome.extension.sendRequest({action: "store", working_tab: tab.id, 
                              store_text: text});

相应地,听者:

chrome.extension.onRequest.addListener(function(request, sender, sendResponse) {
  if (request.action == "store") {
     storeObject.process();
     sendResponse({});
   }
}

能否请您指导我,这将是一个Firefox扩展相应的代码? 我跟着Firefox扩展教程 ,但没有帮助我很多。

欣赏,如果你能发布我的代码片段,这样我就可以开始这方面的工作。

为什么我这样做:我想这个端口Chrome扩展到Firefox。

Answer 1:

与Firefox中的等效代码附加SDK会是这样的代码:

在main.js脚本,页面-MOD对象被创建:注射内容脚本插入到页面中,并发送一条消息:

// main add-on script
pageMod.PageMod({
  include: "*.org",
  contentScriptFile: self.data.url("my-script.js"),
  // Send the content script a message inside onAttach
  onAttach: function(worker) {
    worker.port.emit("replacePage", "Page matches ruleset");
  }
});

在内容脚本,当接收到的事件:

// content script
self.port.on("replacePage", function(message) {
  document.body.innerHTML = "<h1>" + message + "</h1>";
});

工作示例可以在这里找到:

https://builder.addons.mozilla.org/addon/1053578/latest/

需要注意的是,虽然上面的例子只展示了通信从附加到页面会是很重要的,相反的情况也是可能的 - 你可以从内容脚本将消息发送回附加使用发送相同的基本模式从工人到内容脚本,然后再返回的消息。 欲了解更多有关内容脚本之间的通讯是如何工作的:

https://addons.mozilla.org/en-US/developers/docs/sdk/1.7/dev-guide/guides/content-scripts/index.html



文章来源: Communicating with a content script in a Firefox extension