使Firefox addon-sdk处理多个选项卡

时间:2013-06-07 13:36:05

标签: javascript firefox-addon panel firefox-addon-sdk content-script

我使用它的附加构建器SDK为Firefox添加了一个附加组件。起初它工作得很好,但是当我切换标签时,它开始表现得很奇怪而且松散了它的功能。 我知道我必须遗漏一些东西,这可能与脚本之间的通信有关,但我不知道是什么。

我没有发布代码,而是将扩展程序设为公开,而这里是link

如果你仍然需要我发布代码,你不应该,只要问我,我会这样做。 告诉我,我应该做些什么才能让我的扩展程序分别在许多标签上工作,但同时进行。

1 个答案:

答案 0 :(得分:3)

在我看来,第59-64行实际上应该在attachTabWorker函数中。您只需要将面板的工作人员保存到当前工作人员的通信中。

我将这样的端口通信连接起来:

function attachTabWorker(tab) {
    // Attach and store
    var tabWorker = tabWorkers[tab.id] = tab.attach({
        contentScriptFile: [data.url("clear.js"),data.url("jquery.js")]
    });
    // Clean up
    tabWorker.on("detach", function() {
        if (getTabWorker(tab) === tabWorker) {
            delete tabWorkers[tab.id];
        }
    });
    tabWorker.port.on('hiderOn',function(tag){
        panel1.port.emit('hiderOn', tag);
    });
    tabWorker.port.on('hiderOff',function(tag){
        panel1.port.emit('hiderOff', tag);
    });
}

否则,您只能在首次运行时获取activeTab的端口通信链接设置,而不是像我认为您想要的每个选项卡。代码getActiveTabWorker().port.on ...在加载项启动时运行一次,只为activeTab而不是所有选项卡创建一个监听器。我希望这是有道理的。