在Mozilla附加SDK中限制page-mod目标的任何方法

时间:2015-01-10 00:42:00

标签: javascript firefox-addon-sdk mozilla

我目前正在使用SDK开发Firefox附加组件,该SDK以特定方式修改页面的文本内容。但是,我遇到了以下问题。

我们说我有2个标签,这两个标签都加载了相同的网站。该网站有多个iframe,一些跨域。我只需要更新我当前选项卡中的页面。

如果我使用tab.attach()将工作人员添加到选项卡,我可以将我的内容更改代码注入该选项卡,这样一切都很棒。除了它不会影响iframe。

为了访问iframe,我必须使用以下内容来使用PageMod:

tabs.on('ready', function(tab) {
    pageMod.PageMod({
            include: tab.url,
            contentScriptFile: self.data.url('./pagemod.js'),
            attachTo: ["top", "frame", "existing"],
            onAttach: function(worker) {
                worker.on('message', function(msg){
                    me.handleMessage(msg);
                });
                tracker.workers.push(worker);
            }
        });
    } 
});

它工作正常,因为它将工作者附加到框架和顶部文档,所以我可以将我的代码注入所有这些。但是,它也会影响我在第二个选项卡中打开的其他页面,因为它具有相同的URL。

有什么办法可以将页面修改效果仅限制在当前标签上吗?我找不到任何明显的东西,但也许我已经看了太久了。

谢谢!

1 个答案:

答案 0 :(得分:2)

每个tab has an id,您随时可以访问current active tab this way。因此,在onAttach属性中,您可以执行if tab.id == tabs.activeTab.id { doSomethingElse(); }