首先:这与“如何自动转换chrome扩展”没有重复......
我写了一个非常受欢迎的复杂镀铬扩展程序。所以很多人都让我发布一个firefox版本。
我目前处于分析我可能遇到的困难的早期状态。我能够将大多数特定于chrome的命令映射到firefox中的其他命令。
直到现在,还有一个主题未解决: Chrome使用内容脚本和后台脚本。
沟通的方式是这样的: 内容脚本:
chrome.runtime.sendMessage(
{
Action: "LoadAll"
}, function(response)
{
mySetting= response.Setting;
}
);
背景脚本:
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse)
{
if (request.Action === "LoadAll")
{
sendResponse({Setting: "hello out there!"});
return true;
}
)
});
(如果我可能错过了一个括号,请忽略)
如何在firefox扩展上完成此通信?或者FF推荐一种完全不同的方法吗?
如果没有“接受此命令” - 回答,指向更深入解释的链接会很不错。
答案 0 :(得分:2)
您正在寻找的是Message Manager。我们正在为Fx开发一个大而复杂的扩展大约2年,并且最近为它做了一个很好的Chrome端口。消息传递过程在Fx和Chrome中有很大差异。您可以将其视为在窗口/浏览器/选项卡中注入内容脚本,这与Chrome中的内容脚本几乎没有共同点,然后通过sendSyncMessage / sendAsyncMessage从注入的脚本中与您的扩展代码进行通信。我希望这会有所帮助。