首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >是否在激活私人浏览时阻止内容脚本插入?

问是否在激活私人浏览时阻止内容脚本插入?
EN

Stack Overflow用户
提问于 2012-09-24 18:05:38
回答 1查看 265关注 0票数 0

我有一个内容脚本,我想防止它在启用私人浏览时自动注入。我使用的是Firefox add-on SDK的最新版本(1.9)。

我像这样注入内容:

代码语言:javascript
复制
// 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附件不会为每个注入求值。进入和离开隐私浏览也不会触发重新评估。

代码语言:javascript
复制
if (!pb.isActive) {
  // the code I have above.
}

我可以监听pb.on('start')事件,但我不认为有一种方法可以解除附加pagemods。如果启用了私人浏览模式,我可能不会操作内容脚本,但这似乎是一种黑客行为,可能会导致未来的安全问题。

这样做的正确方法是什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-09-24 21:20:27

有一个destroy方法:

https://addons.mozilla.org/en-US/developers/docs/sdk/latest/packages/addon-kit/page-mod.html#destroy%28%29

需要注意的是,如果您对现有页面进行了一些更改,则必须手动删除它们。

所以,你可以有这样的东西:

代码语言:javascript
复制
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的人有用。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12562799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档