在移动端做交互,我们经常会用到本地存储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相关推荐

  1. ios中safari无痕浏览模式下,localStorage的支持情况

    前言 前阶段,测试提了个bug,在苹果手机中无痕模式下,搜索按钮不好使,无法跳页,同时搜索历史也没有展示(用户搜索历史时使用localStorage存储). 正文 iOS上Sarfari在无痕模式下, ...

  2. Storge 在 Safari 的无痕浏览模式中的坑

    关于 Storge 在 Safari 的无痕浏览模式中的坑 前言 今天遇到了一个诡异的bug,一个网页在微信浏览器中是可以正常显示的,而在一些用户的 Safari 中却无法正常渲染.真是日了狗了!检查 ...

  3. ios safari 开启无痕浏览(隐私模式)报QuotaExceededError: DOM Exception 22异常解决办法...

    // 检测safari是否开启无痕浏览 (function () {var testKey = 'test'var storage = window.sessionStoragetry {storag ...

  4. H5页面 用户启动无痕浏览本地储存 localstorage 清楚数据

    移动端开发时,如果用户浏览器启用了无痕浏览,那么本地存储信息就会失效,会导致页面信息报错 解决办法: 先判断是否能适用 localStorage.setItem 如果不行在适用  cookie coo ...

  5. php网页无痕预览,javascript,html5_如何应对用户使用无痕浏览模式,javascript,html5 - phpStudy...

    如何应对用户使用无痕浏览模式 在开发过程中,由于一些页面会使用localStorage,sessionStorage ,在无痕浏览模式,本地存储不能用,会出现很多问题,看到过一种解决方案 functi ...

  6. js判断无痕浏览模式(修改)

    最近做web商城,遇到一个棘手的问题: 用户反映登录了商城之后,过一段时间就需要重新登录,频率很高,我们通过对该用户的访问记录进行检测,发现的确存在该问题.因为用户的信息是存在本地localStroa ...

  7. 苹果电脑怎么无痕浏览网页

    我们都知道苹果电脑macbook里的safari浏览器可以开启无痕浏览模式,用来保护自己的隐私,非常好用.那么苹果电脑怎么无痕浏览呢?请看小编的详细介绍吧! mac网页怎么开无痕浏览图文步骤: 1.打 ...

  8. Chrome的无痕浏览实现初探

    一. 功能定义 首先要从功能上明确无痕浏览的作用和目的.涉及的功能包括: Bookmark, History (Input, Browse, Download, Forms/Auto complete ...

  9. 关于safiry开启无痕浏览时本地存储的处理

    在移动端做交互,我们经常会用到本地存储localstorage来存储变量.但是在safiry浏览器开启无痕浏览模式时,本地存储不管用了.那么是不是就不能行了呢.当然不是.除了localstorage和 ...

最新文章

  1. 实现一个全链路监控平台很难吗?一点都不难。。。
  2. 机器学习前沿:Michael Jordan与鬲融、金驰、马腾宇等青年才俊的对话
  3. 广州.NET 俱乐部第三次聚会成功举办。
  4. 矩阵快速幂各类题型总结(一般,共轭,1 * n, 矩阵简化)
  5. GetWeApp聊天室 代码(微信小程序)
  6. Php如何过360拦截,PHP常见漏洞修复文件-360漏洞修复插件
  7. 写给小白的自然语言处理入门简介
  8. python计算存款_python入门教程NO.8 用python写个存款利息计算器
  9. 【渗透测试】—如何利用文件包含的方式进行攻击
  10. 全国计算机三级网络技术题库南开,计算机三级上机-适用于三级网络技术数据库等(南开100题).doc...
  11. android如何设置自适应大小的背景图片,Android 背景图片自适应方案
  12. STM32笔记之 PWM(脉宽调制)
  13. 初学python数据结构-切片
  14. 【修真院java小课堂】Shiro
  15. grant,revoke,deny 服务器权限控制命令
  16. pgsql:添加注释与查询注释
  17. JAVA使用springboot整合佳博标签打印机(一)
  18. 1549: 蔡老板发工资
  19. python入门(五)实现统计《哈姆雷特》最多单词和《三国演义》人物出场次数
  20. 基于STM32F401RET6字库烧录(SPIW25Q64驱动)

热门文章

  1. spark 相关性分析_基本统计 - correlations(相关性系数) - 《spark机器学习算法研究和源码分析》 - 书栈网 · BookStack...
  2. java毕业设计个人博客系统mybatis+源码+调试部署+系统+数据库+lw
  3. 毕设学习笔记(1):经典DV-Hop算法(MATLAB)
  4. 训练模型填充空值(fill null)的几种方法
  5. Google Earth Engine APP——UI地图加载一个高程显示标签并显示高程案例
  6. VBA 数值-文本转换
  7. 计算机测试的论文,软件测试毕业论文-软件工程论文-计算机论文.docx
  8. VBA代码学习for循环
  9. 微信小程序开发实战11_4 微信支付退款流程
  10. JAVA练习题:求水仙花数