【问题标题】:Greasemonkey detect private browsing mode?Greasemonkey 检测隐私浏览模式?
【发布时间】:2016-12-12 20:27:36
【问题描述】:

如果我的 Greasemonkey 脚本当前在 Firefox 隐私浏览窗口中运行,我需要使它的行为有所不同。是否可以从 Greasemonkey 中检测到这一点?如果不是,那么是否可以让它在隐私浏览模式下根本不运行?

编辑:我想这样做的一个原因是脚本通常会发出 AJAX 请求,其中包括有关访问页面的信息,并且服务器端可能会存储该信息(在正常模式下浏览时可以)。但是,如果用户处于隐私浏览状态,我不希望服务器端拥有用户正在访问该页面的信息,因此我希望它在这种情况下不发出这些请求。

【问题讨论】:

  • 没有也没有。更重要的是,你有什么理由想做这样的事情?
  • @BrockAdams 我想确保在这种情况下脚本不会导致将信息写入持久存储,这是隐私浏览的重点。似乎是一个合理的要求,不是吗?
  • 如果这是您的目标,那么问题就解决了!当隐私浏览会话关闭时,您的脚本(或页面)写入持久存储(不包括 GM_setValue)的任何内容都将被删除。
  • localStorage 消失了,所以你在那里。您没有使用 GM_setValue。您应该在 Q 中提到 AJAX 调用(现在应该编辑它)。 GM仍然无法检测到隐私模式。但是如果你可以展示一个合法的用例,你可以为此向通用汽车的开发人员提出功能请求。
  • @BrockAdams 抱歉,您对 localStorage 的看法是对的,因此这确实解决了一半的问题。谢谢。我已编辑问题以包含有关 AJAX 调用的信息。

标签: javascript greasemonkey


【解决方案1】:

在 Firefox 的插件中,您可以使用以下代码从 Mozilla's developer docs 检测浏览器是否处于隐私浏览模式。然而,这是一个内部 API,只能从插件内部访问,而不是网站或第三方脚本。

无法保证这会对您有所帮助,因为我不确定 Grease Monkey 是否在 Firefox 中公开组件 API 以在 GM 脚本中使用。最初的搜索似乎没有任何结果。

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

    var inPrivateBrowsingMode = pbs.privateBrowsingEnabled;

    if (!inPrivateBrowsingMode) {
    /* save private information */
    }
} catch(e){
  alert("Error!");
}  

【讨论】:

    【解决方案2】:

    此功能从 Greasemonkey 3.8 开始实现 - https://github.com/greasemonkey/greasemonkey/issues/2199

    您可以使用GM_info.isPrivate 来检查用户脚本是否在私有模式窗口中运行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-05-20
      • 1970-01-01
      • 1970-01-01
      • 2019-03-16
      • 2014-07-15
      • 2014-11-20
      • 1970-01-01
      • 2013-01-01
      相关资源
      最近更新 更多