我正在努力将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"});