【问题标题】:Making Firefox addon-sdk handle multiple tabs让 Firefox addon-sdk 处理多个选项卡
【发布时间】:2013-06-07 13:36:05
【问题描述】:

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

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

如果您仍然需要我发布代码,女巫您不应该这样做,只要问我,我会做的。 告诉我我应该怎么做才能使我的扩展程序分别在多个选项卡上同时工作。

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

    • 谢谢,但我的部分问题仍然存在,当我重新加载标签或更改标签时,它不会重置面板。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-22
    相关资源
    最近更新 更多