我目前正在使用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。
有什么办法可以将页面修改效果仅限制在当前标签上吗?我找不到任何明显的东西,但也许我已经看了太久了。
谢谢!
答案 0 :(得分:2)
每个tab has an id,您随时可以访问current active tab this way。因此,在onAttach
属性中,您可以执行if tab.id == tabs.activeTab.id { doSomethingElse(); }
。