咱们的一个小应用,使用百度地图API获取到用户的坐标以后用localStorage作了下缓存,测试上线以后有运营同窗反馈页面数据拉取不到,javascript
测试的时候没有发现问题,并且2台相同的iphone一台能够一台不行,最后定位到是localStorage有问题。java
可是为啥明明版本同样的2台手机一台能够一台不行呢?web
并且2台手机打印localStorage明明都是Object,奇怪了。缓存
在度娘上没找到答案,最后到google发现有人说是Private Browsing Mode引发的。而后查看IOS的safari没有发现隐私设置什么的
iphone
后来点击右下角小框框发现有个无痕浏览的模式。MD,关闭后一切正常测试
// Safari, in Private Browsing Mode, looks like it supports localStorage but all calls to setItem // throw QuotaExceededError. We're going to detect this and just silently drop any calls to setItem // to avoid the entire page breaking, without having to do a check at each usage of Storage. if (typeof localStorage === 'object') { try { localStorage.setItem('localStorage', 1); localStorage.removeItem('localStorage'); } catch (e) { Storage.prototype._setItem = Storage.prototype.setItem; Storage.prototype.setItem = function() {}; alert('Your web browser does not support storing settings locally. In Safari, the most common cause of this is using "Private Browsing Mode". Some settings may not save or some features may not work properly for you.'); } }
能够酱紫判断。提示用户关闭无痕模式。this