判断浏览器是否无痕

2020-07-13  本文已影响0人  尤格萨隆

注:网上流传的FileSystem API方法在chrome74版本已失效

  1. 此方法仅适用于https
if ('storage' in navigator && 'estimate' in navigator.storage) {
    navigator.storage.estimate().then(function(estimate) {
      if (estimate.quota < 120000000) {
        console.log('无痕模式');
      } else {
        console.log('非无痕模式');
      }
    });
  } else {
    console.log('此浏览器版本无法检测是否无痕');
  }
  1. 此方法http也可以使用,但是浏览器会报warning
window.webkitStorageInfo.queryUsageAndQuota(webkitStorageInfo.TEMPORARY,
    function(used, remaining) {
      console.log("Used quota: " + used + ", remaining quota: " + remaining);
      if (remaining < 120000000) {
        console.log('无痕模式');
      } else {
        console.log('非无痕模式');
      }
    }, function(e) {
      console.log('Error', e); 
    }
  );

原理:TEMPORARY隐身模式和非隐身模式之间的存储配额的主要区别在于,在隐身模式下,存在一个硬限制,120MB而非隐身窗口则没有。从下表可以明显看出,在非隐身模式下,临时存储配额小于120MB时,设备存储必须小于2.4GB。但是,出于所有实际目的,可以安全地假设当前使用的大多数设备具有超过2.4GB


不同磁盘大小的设备可用的最小存储配额

兼容性:支持chrome、opera、搜狗、qq、360;不支持safari,Firefox,IE,Edge

上一篇下一篇

猜你喜欢

热点阅读