【问题标题】:Communicating with a content script in a Firefox extension与 Firefox 扩展中的内容脚本通信
【发布时间】:2012-06-19 19:23:33
【问题描述】:

我有一个 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,但这对我没有多大帮助。

感谢,如果你能给我发一个代码 sn-p,这样我就可以开始研究这个了。

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

【问题讨论】:

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


    【解决方案1】:

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-02
      • 1970-01-01
      • 2012-03-18
      • 1970-01-01
      • 2012-07-29
      • 1970-01-01
      • 2015-06-23
      • 1970-01-01
      相关资源
      最近更新 更多