Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/426.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 让Firefox插件sdk处理多个选项卡_Javascript_Firefox Addon_Panel_Firefox Addon Sdk_Content Script - Fatal编程技术网

Javascript 让Firefox插件sdk处理多个选项卡

Javascript 让Firefox插件sdk处理多个选项卡,javascript,firefox-addon,panel,firefox-addon-sdk,content-script,Javascript,Firefox Addon,Panel,Firefox Addon Sdk,Content Script,我使用Firefox的插件生成器SDK为Firefox制作了一个插件。起初,它工作得很好,但当我切换标签时,它开始表现出奇怪的行为,并失去了它的功能。 我知道我肯定遗漏了什么,这可能与脚本之间的通信有关,但我不知道是什么 我没有发布代码,而是公开了扩展,下面是示例 如果你仍然需要我发布密码,你不应该,只要让我发布,我就会发布。 告诉我应该怎么做才能使扩展分别在多个选项卡上同时工作。在我看来,第59-64行实际上应该在attachTabWorker函数中。您只需将面板的工作人员保存到当前工作人员通

我使用Firefox的插件生成器SDK为Firefox制作了一个插件。起初,它工作得很好,但当我切换标签时,它开始表现出奇怪的行为,并失去了它的功能。 我知道我肯定遗漏了什么,这可能与脚本之间的通信有关,但我不知道是什么

我没有发布代码,而是公开了扩展,下面是示例

如果你仍然需要我发布密码,你不应该,只要让我发布,我就会发布。
告诉我应该怎么做才能使扩展分别在多个选项卡上同时工作。

在我看来,第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而不是所有选项卡创建侦听器。我希望这是有意义的。

谢谢,但我的部分问题仍然存在,当我重新加载选项卡或更改选项卡时,它不会重置面板。