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.
}