判断浏览器是否无痕
2020-07-13 本文已影响0人
尤格萨隆
注:网上流传的FileSystem API方法在chrome74版本已失效
- 此方法仅适用于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('此浏览器版本无法检测是否无痕');
}
- 此方法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