[英]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.