myStorage在ios safari无痕浏览模式下的解决方案 今天看到了这个帖子LocalStorage 在 Private Browsing 下的一个限制, 吓尿了,如果用户开启了无痕浏览,app几乎就废了,虽然做了plus.storage的兼容,不过会很慢很慢滴. 赶紧测试一下.... 还好,暂时没问题. 我这小心肝终于平静了. 万一,万一,万一有影响呢,还是做下容错吧,代码放到了github上,这里就不贴出来了. myStorageForPrivateBrowing…
昨天下午,测试提了一个bug,问题是:在苹果手机Safari无痕浏览模式下系统登录成功但是页面不跳转. 思前想后找了半天没思路,后来经过同事的点拨,说可能是禁用了cookie之类的,反正我也没思路就顺着这个发散,结果还真是,localStorage无法在苹果Safari的无痕浏览模式下使用,因为不支持,具体解决办法就是加个判断,看看浏览器是否支持localStorage. function isLocalStorageSupported() {        var testKey = 'tes…
前言 前阶段,测试提了个bug,在苹果手机中无痕模式下,搜索按钮不好使,无法跳页,同时搜索历史也没有展示(用户搜索历史时使用localStorage存储). 正文 iOS上Sarfari在无痕模式下,浏览器假装支持localStorage,并在全局window上暴漏了该方法,所以校验是有localStorage对象的,但是调用setItem进行保存的时候,就报Error: QuotaExceededError ... : The quota has been exceeded.   因此,进行了…
事件回顾 做了一个移动端的页面,测试的时候出现了一个诡异的 bug.别的浏览器都好好的,就 ios 的 Safari 浏览器页面停止了渲染,似乎是有一段 js 文件没有载入.但是奇怪的是,同一型号的 iphone 的 Safari 浏览器,有些可以,有些不行,一度让我以为不可能是代码的问题(如果是代码的问题,应该都挂才科学啊),而是个别机器的原因.但是最后的最后,定位出来的原因是 Safari 开启了 无痕浏览模式! 就是这样: DEBUG 当然,除了 Safari 开启了无痕浏览外,另一个重要…
AVAudioSession *audioSession = [AVAudioSession sharedInstance]; [audioSession setCategory:AVAudioSessionCategoryPlayback error:nil];…
今天,群里一个兄弟抛出一个问题(如上),截图说明. 打断点调试下,貌似是console里面的log方法出错了,如下: 这个是console的log方法,为什么错呢,继续: 我们会发现,在这里是检测function的apply方法,但是我们在控制台输入typeof logFn会发现,输出的是"object",竟然是object!!!好吧,这算是找到问题了.那么,怎么办呢? 我想了个笨方法,你不是"object"么,那我就手动改成"function"…
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 getIte…
Hybrid App(混合式开发)已经是每一个商业应用都会使用的开发手段.其最大的优势就是将一些可动态更新的内容页面使用 H5 开发,然后借用移动端原生系统提供的 WebView 控件加载进来.这种方式不仅能够节约安卓和 iOS 两个客户端的开发人力成本,还能在避免应用版本迭代的情况下动态更新页面内容.然而,WebView 有一个弊端,就是始终无法避免的安全问题. 比如,你连接的 WI-FI 可能会被一些网络运营商恶意拦截 DNS 系统,当你打开应用的 WebView 时,会在页面底部或者其他地…
无痕模式是黑色风格,正常模式是白色风格.在无痕模式中,使用localStorage.setItem()会报错,但在window对象下确实有localStorage.setItem方法. if (typeof localStorage === 'object') { try { localStorage.setItem('localStorage', 1); localStorage.removeItem('localStorage'); } catch (e) { Storage.prototy…
前言 Safari开启无痕模式后,localStorage和sessionStorage为空,对其进行set操作也会报错,也就是说这种情况下,storage是被禁止使用了.接下来说一下解决方法. 解决方案 我们项目框架上的解决方法是对storage进行一层封装,遇到这种开启无痕模式的情况,会定义一个window的全局变量,把之前准备存放到storage的内容改为存到这个全局变量中. 注意,无痕模式下localStorage和sessionStorage对象本身依然是存在的,只是调用setItem…