WebExtensions(Firefox):在内容和后台脚本之间进行通信

时间:2018-03-13 21:47:16

标签: messaging firefox-webextensions

我刚刚开始开发我的第一个基于WebExtension的Firefox AddOn,我无法理解内容脚本和后台脚本之间的通信概念,如下所述:https://developer.mozilla.org/en-US/Add-ons/WebExtensions/Content_scripts#Communicating_with_background_scripts

我已经删除了"一次性消息"示例更简单(只需将第一个链接的href发送到后台脚本),但它仍然不起作用。

清单:

{
  "manifest_version": 2,
  "name": "CommunicationTest",
  "version": "1.0",
  "background": {
    "scripts": ["comm-background.js"]
  },
  "content_scripts": [
    {
      "matches": ["*://*.imdb.com/*"], // use any page as example
      "js": ["comm-content.js"]
    }
  ]
}

内容脚本:

var links = document.links;
if (links.length > 0) {
  var href = links[0].href;
  browser.runtime.sendMessage( { "url": href } );
  console.log('(content)', href);  // this log works.
}

后台脚本版本1(根据Mozilla文档)

console.log('background is here ...'); // this log works.
browser.runtime.onMessage.addListener(notify);
function notify(message) {
  console.log('(background) ' + message.url);
}

后台脚本版本2(在网络中找到)

console.log('background is here ...'); // this log works.
browser.runtime.onMessage.addListener( function(message,sender,sendResponse) {
  console.log('(background) ' + message.url);
});

正如您在评论中看到的,某些控制台日志有效。这意味着AddOn已加载并正在运行。我在about:debugging中将它作为临时AddOn进行测试。 其他控制台日志不起作用。但是我在控制台中收到了错误消息:

  

错误:无法建立连接。接收端不存在。

我想我一定错过了文档中的基本细节。

0 个答案:

没有答案