Firefox插件:sendMessage在tabs.onUpdated中不起作用,但在browserAction.onClicked(background.js)中有效

时间:2017-11-01 15:43:46

标签: javascript firefox firefox-addon

我正在努力将Chrome扩展程序迁移到Firefox插件中。老实说,并不认为这会很难,但我一直试图解决背景问题,不想向内容脚本发送消息。 (是的,我已经在线阅读了所有内容,但它只是在onUpdated监听器中发送了消息)

修改

当我尝试将以下行放入browserAction.onClicked监听器时,它可以工作,但它在onUpdated中不起作用?

MyType

结束编辑

是的,加载了内容脚本,并使用主机名的警告进行检查。

以下是我在Chrome扩展程序中使用的代码(背景):

{"field1": "blah", "field2":"abc-blah"}

现在我在Firefox插件(背景)中尝试了一下:

browser.browserAction.onClicked.addListener(function(tab) {
   browser.tabs.sendMessage(tab.id, {action: "isInstalled"});
});

这是在browser.tabs.onUpdated监听器中,如下所示:

chrome.tabs.query({active: true, currentWindow: true}, ([tab]) => {
            chrome.tabs.sendMessage(tab.id, {
                action: 'isInstalled'
            });
        });

我也试过这个,因为我认为它会起作用:(是的,tabId是正确的。)

var gettingActiveTab = browser.tabs.query({active: true, currentWindow: true});
        gettingActiveTab.then((tabs) => {
            browser.tabs.sendMessage(tabs[0].id, {greeting: "hello"});
        });

现在,这里是内容脚本上的onMessage监听器

browser.tabs.onUpdated.addListener(function(tabId, changeInfo, tabInfo){

if(changeInfo.status === "complete"){

...

}
});

我一直收到以下错误:"错误:无法建立连接。接收端不存在。"这对我来说完全没有意义..有谁能看到这个问题?

顺便说一句,这是清单文件:

browser.tabs.sendMessage(tabId, {action: "isInstalled"});

0 个答案:

没有答案