Safari无痕浏览影响localStorage
在移动端做交互,我们经常会用到本地存储localStorage来存储变量。
if(window.localStorage){localStorage.setItem('key','value');
}
但只是这样判断是不够的,现在的一些浏览器有一种功能叫无痕浏览,顾名思义,就是用户在浏览网页的过程中什么都不缓存,
什么也不记录,不留下痕迹。
自然地,localStorage也被禁用了。但此时window.localStorage并不是null,它还是原来的localStorage对象,只不过
这个对象的方法被禁用了。如果单纯只按上面的方法判断,js会抛出异常。
那么是不是就不能行了呢。
当然不是。除了localStorage和sessionStorage之后外,我们知道,可以使用cookie来存储。
在Safari开启无痕浏览的时候,本地存储会抛异常,所以可以通过捕获异常来判断是否使用cookie存储。
var tracelesStorage=function(name, val){ if(arguments.length> 1){try{localStorage.setItem(name, val);}catch(e){setCookie(name,val,'d365');//抛出异常使用cookie存储}}else {var dataStr='';try{localStorage.setItem('cookieTest', 'test');//判断是否支持存储dataStr = localStorage.getItem(name);}catch(e){dataStr = getCookie(name)//同样抛出异常我们使用cookie去取值}return dataStr;}}
下面是cookie存储的取值和存值
var getCookie=function(name)//取cookies值{var arr,reg=new RegExp("(^| )"+name+"=([^;]*)(;|$)");if(arr=document.cookie.match(reg)){if(!arr[2]){return null ;}else if(arr[2] !='null'){return unescape(arr[2]) ;}else{return null ;};}else{return null;}}//存储Cookievar setCookie=function(name, value, time){var strsec = getsec(time);var exp = new Date();exp.setTime(exp.getTime() + strsec * 1);document.cookie = name + "=" + escape(value) + ";expires=" + exp.toGMTString()+";path=/";}var getsec=function(str) {var str1 = str.substring(1, str.length) * 1;var str2 = str.substring(0, 1);if (str2 == "s") {return str1 * 1000;} else if (str2 == "h") {return str1 * 60 * 60 * 1000;} else if (str2 == "d") {return str1 * 24 * 60 * 60 * 1000;}}
如果要清除存储,同样抛异常的时候就需要清除cookie
var clearStorage=function(name){ // 清除存储if(!name) { return false;}try{localStorage.setItem('cookieTest', 'test');//正常清除localStorage.removeItem(name);}catch(e){document.cookie = name + "=" + null + ";expires=" + 0+";path=/";//抛出异常,存储到了cookie,因此清除cookie。}}
Safari无痕浏览影响localStorage相关推荐
- ios中safari无痕浏览模式下,localStorage的支持情况
前言 前阶段,测试提了个bug,在苹果手机中无痕模式下,搜索按钮不好使,无法跳页,同时搜索历史也没有展示(用户搜索历史时使用localStorage存储). 正文 iOS上Sarfari在无痕模式下, ...
- Storge 在 Safari 的无痕浏览模式中的坑
关于 Storge 在 Safari 的无痕浏览模式中的坑 前言 今天遇到了一个诡异的bug,一个网页在微信浏览器中是可以正常显示的,而在一些用户的 Safari 中却无法正常渲染.真是日了狗了!检查 ...
- ios safari 开启无痕浏览(隐私模式)报QuotaExceededError: DOM Exception 22异常解决办法...
// 检测safari是否开启无痕浏览 (function () {var testKey = 'test'var storage = window.sessionStoragetry {storag ...
- H5页面 用户启动无痕浏览本地储存 localstorage 清楚数据
移动端开发时,如果用户浏览器启用了无痕浏览,那么本地存储信息就会失效,会导致页面信息报错 解决办法: 先判断是否能适用 localStorage.setItem 如果不行在适用 cookie coo ...
- php网页无痕预览,javascript,html5_如何应对用户使用无痕浏览模式,javascript,html5 - phpStudy...
如何应对用户使用无痕浏览模式 在开发过程中,由于一些页面会使用localStorage,sessionStorage ,在无痕浏览模式,本地存储不能用,会出现很多问题,看到过一种解决方案 functi ...
- js判断无痕浏览模式(修改)
最近做web商城,遇到一个棘手的问题: 用户反映登录了商城之后,过一段时间就需要重新登录,频率很高,我们通过对该用户的访问记录进行检测,发现的确存在该问题.因为用户的信息是存在本地localStroa ...
- 苹果电脑怎么无痕浏览网页
我们都知道苹果电脑macbook里的safari浏览器可以开启无痕浏览模式,用来保护自己的隐私,非常好用.那么苹果电脑怎么无痕浏览呢?请看小编的详细介绍吧! mac网页怎么开无痕浏览图文步骤: 1.打 ...
- Chrome的无痕浏览实现初探
一. 功能定义 首先要从功能上明确无痕浏览的作用和目的.涉及的功能包括: Bookmark, History (Input, Browse, Download, Forms/Auto complete ...
- 关于safiry开启无痕浏览时本地存储的处理
在移动端做交互,我们经常会用到本地存储localstorage来存储变量.但是在safiry浏览器开启无痕浏览模式时,本地存储不管用了.那么是不是就不能行了呢.当然不是.除了localstorage和 ...
最新文章
- 实现一个全链路监控平台很难吗?一点都不难。。。
- 机器学习前沿:Michael Jordan与鬲融、金驰、马腾宇等青年才俊的对话
- 广州.NET 俱乐部第三次聚会成功举办。
- 矩阵快速幂各类题型总结(一般,共轭,1 * n, 矩阵简化)
- GetWeApp聊天室 代码(微信小程序)
- Php如何过360拦截,PHP常见漏洞修复文件-360漏洞修复插件
- 写给小白的自然语言处理入门简介
- python计算存款_python入门教程NO.8 用python写个存款利息计算器
- 【渗透测试】—如何利用文件包含的方式进行攻击
- 全国计算机三级网络技术题库南开,计算机三级上机-适用于三级网络技术数据库等(南开100题).doc...
- android如何设置自适应大小的背景图片,Android 背景图片自适应方案
- STM32笔记之 PWM(脉宽调制)
- 初学python数据结构-切片
- 【修真院java小课堂】Shiro
- grant,revoke,deny 服务器权限控制命令
- pgsql:添加注释与查询注释
- JAVA使用springboot整合佳博标签打印机(一)
- 1549: 蔡老板发工资
- python入门(五)实现统计《哈姆雷特》最多单词和《三国演义》人物出场次数
- 基于STM32F401RET6字库烧录(SPIW25Q64驱动)
热门文章
- spark 相关性分析_基本统计 - correlations(相关性系数) - 《spark机器学习算法研究和源码分析》 - 书栈网 · BookStack...
- java毕业设计个人博客系统mybatis+源码+调试部署+系统+数据库+lw
- 毕设学习笔记(1):经典DV-Hop算法(MATLAB)
- 训练模型填充空值(fill null)的几种方法
- Google Earth Engine APP——UI地图加载一个高程显示标签并显示高程案例
- VBA 数值-文本转换
- 计算机测试的论文,软件测试毕业论文-软件工程论文-计算机论文.docx
- VBA代码学习for循环
- 微信小程序开发实战11_4 微信支付退款流程
- JAVA练习题:求水仙花数