【发布时间】:2014-06-25 00:00:23
【问题描述】:
如果隐身模式已激活,我是否可以使用 chrome 扩展程序进行检查,或者我可以使用扩展程序中的按钮启动隐身模式吗?
【问题讨论】:
-
@RobW 我相信这个重复状态是不正确的。引用的问题告诉如何查看扩展是否允许在隐身模式下运行,但这个问题是询问如何判断您当前是否正在以隐身模式运行窗口。这是两个不同的东西。
标签: javascript google-chrome-extension
如果隐身模式已激活,我是否可以使用 chrome 扩展程序进行检查,或者我可以使用扩展程序中的按钮启动隐身模式吗?
【问题讨论】:
标签: javascript google-chrome-extension
首先,稍微解释一下扩展程序如何与隐身模式交互。请注意,扩展程序默认情况下不能在隐身模式下运行或影响/检测隐身标签。用户必须在 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。
【讨论】:
"incognito" 键与启用/禁用隐身模式无关。 How can I enable my chrome extension in incognito mode? 中描述了最接近“启用隐身”按钮的方法
"incognito" 清单键来阐明您的预期含义?我不知道您所说的“接下来发生的事情由清单中的“隐身”设置控制。”在问题的上下文中。