簡體   English   中英

檢測私人瀏覽-Safari問題

[英]Detect Private Browsing - Safari Issue

我正在嘗試檢測用戶是否正在使用私人瀏覽器查看網站。 我有以下適用於Chrome和Firefox的代碼/小提琴,但不適用於Safari。 誰能看到Safari的問題所在? 先感謝您。

new Promise(resolve => {
let db,
on = () => alert('yes'),
off = () => alert('no'),
tryls = () => {
    try {
        localStorage.length ? off() : (localStorage.x = 1, localStorage.removeItem("x"), off())
    } catch (e) {
        on()
    }
}

// Blink
window.webkitRequestFileSystem ? 
    webkitRequestFileSystem(window.TEMPORARY, 1, off, on)

// FF
: "MozAppearance" in document.documentElement.style ? 
    (db = indexedDB.open("test"), db.onerror = on, db.onsuccess = off)

// Safari
: /constructor/i.test(window.HTMLElement) ?
    tryls()

// IE10+ & edge
: !window.indexedDB && (window.PointerEvent || window.MSPointerEvent) ? 
    on()

// Rest
: off()
 }).then(enabled => {
document.body.innerHTML = enabled
})

https://jsfiddle.net/ndyL5mxf/

我為可能遇到的任何人找到了解決方案。 私有模式下的Safari無法處理本地存儲,因此以下代碼會測試是否有本地存儲,如果沒有,請執行以下操作。 為我的問題工作。

var storageTestKey = 'test';
var storage = window.sessionStorage;
try {
     storage.setItem(storageTestKey, 'test');
     storage.removeItem(storageTestKey);
    } catch (e) {
    if (e.code === DOMException.QUOTA_EXCEEDED_ERR && storage.length === 0) {
        console.log('private widow')
    } else {
        console.log('not private')
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM