如何检测我是否在谷歌Chrome扩展应用程序中处于隐身模式?

时间:2015-07-22 13:26:39

标签: javascript google-chrome google-chrome-extension

function test(){
alert(chrome.extension.inIncognitoContext);
if(chrome.extension.inIncognitoContext){
   chrome.tabs.query({currentWindow: true, active: true},function(tabs){
      alert(tabs[0].url);
    });
}
}

document.addEventListener('DOMContentLoaded', function() {
    var link = document.getElementById('link');
   // onClick's logic below:
    link.addEventListener('click', function() {
    test();
  });
});

这是我的chrome扩展应用程序的.js文件,我在单击扩展名中的按钮时调用test()函数(下面是扩展名的html代码)。在隐身模式和默认Chrome中,它都警告为false。我在另一个参考文献中看到使用布尔变量chrome.extension.inIncognitoContext来检查。我错了,代码是否有任何问题

<!doctype html>
<!--
This page is shown when the extension button is clicked, because the
"browser_action" field in manifest.json contains the "default_popup" key with
value "popup.html".
-->
<html>
<head>
<title>Getting Started Extension's Popup</title>
<style>
  body {
    font-family: "Segoe UI", "Lucida Grande", Tahoma, sans-serif;
    font-size: 100%;
  }
  #status {
    /* avoid an excessively wide status text */
    white-space: pre;
    text-overflow: ellipsis;
    overflow: hidden;
    max-width: 400px;
  }
</style>

<!--
  - JavaScript and HTML must be in separate files: see our Content Security
  - Policy documentation[1] for details and explanation.
  -
  - [1]: https://developer.chrome.com/extensions/contentSecurityPolicy
 -->
<script src="popup.js"></script>
</head>
<body>
<button id= "link" onclick="test()">store the page</button>
</body>
</html>

1 个答案:

答案 0 :(得分:4)

Chrome docs on isIncognitoContext对此属性有这样的说法:

  

对于在隐身标签内运行的内容脚本以及在隐身过程中运行的扩展程序页面,都是如此。后者仅适用于“拆分”incognito_behavior的扩展程序。

这里的代码是弹出窗口,这意味着它是一个扩展页面。它不是内容脚本。根据上述说明,如果清单具有顶级属性true,则扩展程序页只会看到isIncognitoContext的{​​{1}}值。

你可能有"incognito": "split"或者根本没有任何东西。根据{{​​3}},"spanning"是默认值:

  

扩展程序和Chrome应用的默认设置为"spanning",这意味着它将在单个共享进程中运行...