繁体   English   中英

如何在私有模式下编写自动关闭的Firefox附加组件?

[英]How Do I Write a Firefox Add-On That Turns Itself Off When in Private Mode?

我写了一个有用的Firefox附加组件。 当浏览器处于私有模式时,我希望这个附加组件能够自我禁用。 根据https://developer.mozilla.org/EN/docs/Supporting_per-window_private_browsing上的文档,我在我的插件周围构建了这个包装器:

const {Cu} = require("chrome");
Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");

// This plugin should not activate in a private browsing session.
if (!PrivateBrowsingUtils.isWindowPrivate(window)) {
  // Add-on code goes here. includes things like:
  var button = buttons.ActionButton(...);
  tabs.on('ready', ...);
  tabs.on('activate', ...);
}

麻烦的是,我收到一个错误,“消息:ReferenceError:窗口未定义”在检查“isWindowPrivate”的行中。

是否有其他方式我应该访问此属性或我需要包括一个额外的位? 这是Firefox 29+的ActionButton插件。 也许界面改变了?

默认情况下,附加SDK扩展选择退出隐私浏览。 这意味着您不必采取任何额外步骤,SDK根本不允许您的代码干扰私人浏览窗口。 这包括像ActionButton这样的ui组件。

window未定义,因为main.js在无窗口上下文中运行。 如果需要,您可以获得它,但在这种情况下您不需要它。

确定用户当前是否处于隐私浏览模式很简单。 只需选中的值privateBrowsingEnabled的属性nsIPrivateBrowsingService服务。

var pbs = Components.classes["@mozilla.org/privatebrowsing;1"]
                    .getService(Components.interfaces.nsIPrivateBrowsingService);
var inPrivateBrowsingMode = pbs.privateBrowsingEnabled;

if (!inPrivateBrowsingMode) {
  /* save private information */
}

您可以在此处找到与私人浏览模式相关的更多编码示例

在Add-on SDK中导入模块有一个怪癖,您必须显式导入符号:

var {PrivateBrowsingUtils} = Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");

除此之外你的代码似乎是正确的

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM