任何限制 Mozilla 附加组件 SDK 中页面模组目标的方法

Any way to restrict targets of page-mod in Mozilla Add-On SDK

本文关键字:目标 方法 Mozilla SDK 组件 任何限      更新时间:2023-09-26

我目前正在使用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。

有什么方法可以将页面模组效果限制为仅当前选项卡吗? 我没有发现任何明显的东西,但也许我只是看了太久了。

谢谢!

每个选项卡都有一个 id,您可以随时通过这种方式访问当前活动选项卡。因此,在onAttach属性中,您可以执行if tab.id == tabs.activeTab.id { doSomethingElse(); }