Safari隱身模式與正常模式的區別是瀏覽器不會保存歷史記錄,沒有頁面緩存,所有本地數據也是臨時的,頁面關閉后無法還原。
如果網頁代碼中使用了諸如localStorage的本地存儲:
在桌面版Safari瀏覽器能生效,但是只針對本次訪問;在手機端Safari瀏覽器只能讀localStorage里的數據,不修改數據,當使用localStorage.setItem進行保存的時候就會報QUOTA_EXCEEDED_ERR
錯誤。
問題來了,當localStorage滿了,再進行寫的操作也會報QUOTA_EXCEEDED_ERR
錯誤,無法通過能否window.localStorage.setItem()來判斷是隱身模式還是內存滿了
//隱身模式下和localStorage滿了都會報同樣的錯誤
try {
window.localStorage.setItem('test', 'test')
} catch (e) {
console.log(e) //QuotaExceddedError(DOM Exception 22):The quota has been exceeded.
}