0

我有一个 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。

4

1 回答 1

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

于 2012-06-20T00:49:51.257 回答