我已经编写了一个可用的Firefox插件。当浏览器处于私有模式时,我希望这个附加组件能够自我禁用。根据{{3}}的文档,我已经在我的插件周围构建了这个包装器:
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插件。也许界面改变了?
答案 0 :(得分:2)
默认情况下,附加SDK扩展程序选择退出隐私浏览。这意味着您不必采取任何额外步骤,SDK根本不允许您的代码干扰私人浏览窗口。其中包括ui
等ActionButton
组件。
window
未定义,因为main.js
在无窗口环境中运行。如果需要,您可以获得它,但在这种情况下您不需要它。
答案 1 :(得分:0)
确定用户当前是否处于隐私浏览模式很简单。只需检查privateBrowsingEnabled
服务上nsIPrivateBrowsingService
属性的值即可。
var pbs = Components.classes["@mozilla.org/privatebrowsing;1"]
.getService(Components.interfaces.nsIPrivateBrowsingService);
var inPrivateBrowsingMode = pbs.privateBrowsingEnabled;
if (!inPrivateBrowsingMode) {
/* save private information */
}
您可以在here
中找到与私密浏览模式相关的更多编码示例答案 2 :(得分:0)
在Add-on SDK中导入模块有一个怪癖,您必须明确导入符号:
var {PrivateBrowsingUtils} = Cu.import("resource://gre/modules/PrivateBrowsingUtils.jsm");
除了您的代码似乎正确