在 Mozilla Add-On SDK 中限制 page-mod 目标的任何方法
Any way to restrict targets of page-mod in Mozilla Add-On SDK
我目前正在使用 SDK 开发 Firefox 插件,该 SDK mod以特定方式生成页面的文本内容。但是,我运行遇到了下面的问题。
假设我有 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。
有什么方法可以将页面 mod 效果限制在当前选项卡上吗?我没有发现任何明显的东西,但也许我已经看得太久了。
谢谢!
每个tab has an id and you can always access the current active tab this way。所以在 onAttach
属性中你可以做 if tab.id == tabs.activeTab.id { doSomethingElse(); }
.
我目前正在使用 SDK 开发 Firefox 插件,该 SDK mod以特定方式生成页面的文本内容。但是,我运行遇到了下面的问题。
假设我有 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。
有什么方法可以将页面 mod 效果限制在当前选项卡上吗?我没有发现任何明显的东西,但也许我已经看得太久了。
谢谢!
每个tab has an id and you can always access the current active tab this way。所以在 onAttach
属性中你可以做 if tab.id == tabs.activeTab.id { doSomethingElse(); }
.