【问题标题】:Chrome Extension Incognito Mode: Check if activated or start with a button? [duplicate]Chrome 扩展程序隐身模式:检查是否已激活或以按钮开始? [复制]
【发布时间】:2014-06-25 00:00:23
【问题描述】:

如果隐身模式已激活,我是否可以使用 chrome 扩展程序进行检查,或者我可以使用扩展程序中的按钮启动隐身模式吗?

【问题讨论】:

  • @RobW 我相信这个重复状态是不正确的。引用的问题告诉如何查看扩展是否允许在隐身模式下运行,但这个问题是询问如何判断您当前是否正在以隐身模式运行窗口。这是两个不同的东西。

标签: javascript google-chrome-extension


【解决方案1】:

首先,稍微解释一下扩展程序如何与隐身模式交互。请注意,扩展程序默认情况下不能在隐身模式下运行或影响/检测隐身标签。用户必须在 Chrome 的扩展程序设置中为您的扩展程序明确启用它。

您可以通过检查chrome.extension.isAllowedIncognitoAccess() 来检测您是否被允许隐身访问(注意它的异步性质)。如果它使用false 回调,您可以guide the user to enable it(感谢 Rob W 提供的链接)。

当您被授予访问权限时会发生什么由"incognito" setting in the manifest 控制。

如果设置为“spanning”(默认),您将拥有一个可以访问正常和隐身上下文的单一背景页面。不过,这种方法有 some limitations

如果设置为“拆分”,您将拥有 2 个实例。你可以用chrome.extension.inIncognitoContext检测你在哪一个。


现在,回答您的问题。假设您已被允许隐身访问。

要在给定选项卡/窗口中检测隐身模式,您可以检查相应对象的incognito 属性,即由chrome.windows.getCurrent 返回。

浏览器操作点击的代码示例:

chrome.browserAction.onClicked.addListener( function(tab) {
  if (tab.incognito) {
    // Clicked in an Incognito window
  } else {
    // Clicked in a normal window
  }
});

要打开一个新的隐身标签/窗口,您可以在描述您正在创建的标签/窗口的对象中传递incognito: true

上述任何一项都不需要tabs 权限。有关详细信息,请参阅 TabsWindows API 文档。

【讨论】:

  • 清单中的"incognito" 键与启用/禁用隐身模式无关。 How can I enable my chrome extension in incognito mode? 中描述了最接近“启用隐身”按钮的方法
  • @RobW 感谢您提供有用的链接。但是,我没有声称这会启用隐身模式
  • 您能否通过提及 "incognito" 清单键来阐明您的预期含义?我不知道您所说的“接下来发生的事情由清单中的“隐身”设置控制。”在问题的上下文中。
  • @RobW 我会改写我的答案,但这必须等到明天。感谢您指出这一点。
  • @RobW 重组了我的答案。我还质疑重复状态:问题中没有任何信息可以解释为“如何获得隐身访问”。
猜你喜欢
  • 2015-12-28
  • 1970-01-01
  • 2023-01-11
  • 2011-08-17
  • 2012-12-18
  • 2015-02-18
  • 2017-09-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多