与Firefox扩展中的内容脚本进行通信

时间:2012-06-19 19:23:33

标签: google-chrome-extension firefox-addon firefox-addon-sdk

我有一个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 Extension tutorial,但这对我没什么帮助。

感谢,如果你能给我发一个代码片段,那么我就可以开始研究它了。

我这样做的原因是:我正在尝试将此Chrome扩展程序移植到Firefox。

1 个答案:

答案 0 :(得分:4)

Firefox Add-on SDK的等效代码类似于以下代码:

在main.js脚本中,创建了一个page-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

相关问题