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娜娜 | 来源: 博客园 | 传送门