Safari无痕模式是不能只使用localStorage存储数据要用Cookie做补丁
safari 无痕浏览情况测试(部分手机)
1.测试机型
iPhone7 Plus 版本 11.3
iPhone6 Plus 版本 11.3.1
iPhone6 版本 10.2.1
iPhoneSE 版本 9
oppe r9
2.测试浏览器
Sarfari UC 自带浏览器
3.结果:
iOS9,iOS10 Sarfari
setItem 报错
getItem null
iOS 11 Sarfari
setItem 可set
getItem 可get
iOS 11 UC
setItem 不可set,但不报错
getItem null
安卓机
可set,可get
4.结论:
只有iOS9、10还存在无痕浏览下localStorage无法使用的情况,iOS11中Sarfari已支持存取localStorage,但是iOS11中UC不支持存localStorage。
所以,在开发过程中使用loaclStorage就需要对以上情况进行兼容,避免 js 报错后影响整个页面的功能。
--------------骚气分割线----------------
Safari无痕模式是不能使用localStorage的,要使用cookie做补丁
可以利用这个特性判断用户是否开启无痕模式,并提醒用户关闭无痕模式
if(typeof localStorage === 'object'){ try{ localStorage.setItem('localStorage', 1); localStorage.removeItem('localStorage'); }catch(e){ alert("请关闭无痕模式!"); }; };
--------------骚气分割线----------------
补: 判断浏览器支持 localStorage
//判断浏览是否支持localStorage function isLocalStorageSupport{ try { var isSupport = ‘localStorage‘ in window && window[‘localStorage‘] !== null; if (isSupport) { localStorage.setItem("local_storage_test", "1"); localStorage.removeItem("local_storage_test"); } return isSupport; } catch (e) { return false; } }
参考一:原文作者:金大光 | 来源:CSDN | 传送门
参考二:原文作者:Hi娜娜 | 来源: 博客园 | 传送门