首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >你能通过脚本确定Chrome是否处于隐身模式吗?

你能通过脚本确定Chrome是否处于隐身模式吗?
EN

Stack Overflow用户
提问于 2010-05-26 08:04:23
回答 10查看 91.5K关注 0票数 128

有没有可能通过脚本来确定Google Chrome是否处于隐身模式?

编辑:实际上我的意思是可以通过用户脚本,但答案假设JavaScript是在网页上运行的。我再次询问了关于用户脚本的问题。

EN

回答 10

Stack Overflow用户

回答已采纳

发布于 2015-01-07 03:09:06

这个答案的功能取决于Chrome版本。最新的评论是这在 v90中工作

是。FileSystem应用编程接口在匿名模式下被禁用。当你处于或没有处于隐身模式时,请查看https://jsfiddle.net/w49x9f1a/

示例代码:

代码语言:javascript
复制
    var fs = window.RequestFileSystem || window.webkitRequestFileSystem;
    if (!fs) {
      console.log("check failed?");
    } else {
      fs(window.TEMPORARY,
         100,
         console.log.bind(console, "not in incognito mode"),
         console.log.bind(console, "incognito mode"));
    }

票数 246
EN

Stack Overflow用户

发布于 2019-08-10 10:48:48

在Chrome74到84.0.4147.135中,这可以通过estimating the available file system storage space来决定

请参阅jsfiddle

代码语言:javascript
复制
if ('storage' in navigator && 'estimate' in navigator.storage) {
    const {usage, quota} = await navigator.storage.estimate();
    console.log(`Using ${usage} out of ${quota} bytes.`);

    if(quota < 120000000){
        console.log('Incognito')
    } else {
        console.log('Not Incognito')
    }   
} else {
    console.log('Can not detect')
}
票数 22
EN

Stack Overflow用户

发布于 2010-05-26 08:15:51

一种方法是访问一个唯一的URL,然后检查指向该URL的链接是否被视为由CSS访问。

你可以在“检测隐身”(死链接)中看到一个这样的例子。

Research paper by same author to replace Detecting Incognito link above

main.html中添加iframe,

代码语言:javascript
复制
 <iframe id='testFrame' name='testFrame' onload='setUniqueSource(this)' src='' style="width:0; height:0; visibility:hidden;"></iframe>

,和一些JavaScript代码:

代码语言:javascript
复制
function checkResult() {
  var a = frames[0].document.getElementById('test');
  if (!a) return;

  var color;
  if (a.currentStyle) {
    color = a.currentStyle.color;
  } else {
    color = frames[0].getComputedStyle(a, '').color;
  }

  var visited = (color == 'rgb(51, 102, 160)' || color == '#3366a0');
  alert('mode is ' + (visited ? 'NOT Private' : 'Private'));
}

function setUniqueSource(frame) {
  frame.src = "test.html?" + Math.random();
  frame.onload = '';
}

然后在加载到iFrame中的test.html中:

代码语言:javascript
复制
<style> 
   a:link { color: #336699; }
   a:visited { color: #3366A0; }
</style> 
<script> 
  setTimeout(function() {
    var a = document.createElement('a');
    a.href = location;
    a.id = 'test';
    document.body.appendChild(a);
    parent.checkResult();
  }, 100);
</script> 

注意:尝试从文件系统执行此操作可能会让Chrome抱怨“不安全的Javascript”。但是,它可以通过will服务器提供服务。

票数 19
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2909367

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档