最新消息:ocsen.wang域名正式启用了!

safari 无痕模式 localStorage 无效

JavaScript ocsen 2116浏览
'QuotaExceededError: DOM Exception 22: An attempt was made to add something to storage that exceeded '

这是在safari 浏览器无痕模式的时候,localStorage.setItem()的时候,报以上错误!因为在无痕模式下,localStorage -> Storage {length: 0}  localStorage 就只有一个length:0。

开发H5 webapp时经常需要使用本地存储,如localStorage和sessionStorage存储一些数据,相比最多能存4k的cookie相比,用起来很好用。但是localStorage在iOS Safari、chrome和UC浏览器中的隐私模式(也叫无痕模式)下无法使用,手机Safari浏览器中具体表现是:

  • localStorage对象仍然存在
  • 但是setItem会报异常:QuotaExceededError
  • getItem和removeItem直接忽略

Safari中控制台截图

localstorage

判断浏览器是否支持localStorage的方法:

function isLocalStorageSupported() {
    var testKey = 'test',
        storage = window.sessionStorage;
    try {
        storage.setItem(testKey, 'testValue');
        storage.removeItem(testKey);
        return true;
    } catch (error) {
        return false;
    }
}

转载请注明:Ocsen-因上努力,果上随缘 » safari 无痕模式 localStorage 无效

111