我有一个内容脚本,我想防止它在启用私人浏览时自动注入。我使用的是Firefox add-on SDK的最新版本(1.9)。
我像这样注入内容:
// lib/main.js
var pb = require('private-browsing');
pageMod.PageMod({
include: "http://*",
contentScriptFile: [self.data.url('jquery.min.js'),
self.data.url('content.js')],
contentSriptWhen: 'start',
onAttach: function(worker) {
// do some stuff
}
});包装整个事物是一个if语句不起作用,因为pageMode附件不会为每个注入求值。进入和离开隐私浏览也不会触发重新评估。
if (!pb.isActive) {
// the code I have above.
}我可以监听pb.on('start')事件,但我不认为有一种方法可以解除附加pagemods。如果启用了私人浏览模式,我可能不会操作内容脚本,但这似乎是一种黑客行为,可能会导致未来的安全问题。
这样做的正确方法是什么?
发布于 2012-09-24 21:20:27
有一个destroy方法:
需要注意的是,如果您对现有页面进行了一些更改,则必须手动删除它们。
所以,你可以有这样的东西:
const pb = require('private-browsing');
const { PageMod } = require('page-mod');
var mod = null;
var options = {
include: "http://*",
contentScriptFile: [self.data.url('jquery.min.js'),
self.data.url('content.js')],
contentSriptWhen: 'start',
onAttach: function(worker) {
// do some stuff
}
}
if (!pb.isActive)
mod = PageMod(options);
pb.on("start", function(){
if (mod) {
mod.destroy();
mod = null;
}
})
pb.on("stop", function() {
if (!mod) {
mod = PageMod(options);
}
})没有测试,只是给你一个粗略的概念。我不确定每次创建/销毁PageMod都是一件好事。
mozilla-labs-jetpack邮件列表上的Note原始帖子,复制了这里的答案,以便对其他不了解ML的人有用。
https://stackoverflow.com/questions/12562799
复制相似问题