iOS Safari 隐私浏览 localStorage 和 sessionStorage 支持?

Posted

技术标签:

【中文标题】iOS Safari 隐私浏览 localStorage 和 sessionStorage 支持?【英文标题】:iOS Safari Private Browsing localStorage and sessionStorage Support? 【发布时间】:2016-06-07 01:43:20 【问题描述】:

我在 *** 上发现了一些关于使用 ios Safari 隐私浏览和sessionStoragelocalStorage 解决特定功能的问题。但我还没有找到明确的资源来表明 iOS Safari 在隐私浏览时对 sessionStoragelocalStorage 的支持。

对此有什么支持,或者 Apple 是否有任何特定资源表示此功能?普遍的共识是,如果没有 polyfill,localStorage 根本不受支持,sessionStorage 也是如此吗?

非常感谢!

【问题讨论】:

【参考方案1】:

我认为没有任何针对 iOS 的特定资源,但这里是 Apple 的官方文档:

https://developer.apple.com/library/safari/documentation/iPhone/Conceptual/SafariJSDatabaseGuide/Name-ValueStorage/Name-ValueStorage.html

这个 *** 问题也非常有用:

QuotaExceededError: Dom exception 22: An attempt was made to add something to storage that exceeded the quota

一般来说,解决sessionStoragelocalStorage 时,请尝试在打开Web Inspector 的手机上使用Safari 进行本地开发。祝你好运:)

【讨论】:

【参考方案2】:

是的,sessionStoragelocalStorage 也是如此。

Paul Irish 有一篇优秀的 Gist 解释了这个问题的历史:

https://gist.github.com/paulirish/5558557

如果您只需要其中一个,最好的解决方案:

function isLocalStorageEnabled() 
  try 
      var mod = '__storage_test__';
      localStorage.setItem(mod, mod);
      localStorage.removeItem(mod);
      return true;
   catch(e) 
      return false;
  

或者,为了使其适用于两者,MDN 推荐的解决方案更通用: https://developer.mozilla.org/en-US/docs/Web/API/Web_Storage_API/Using_the_Web_Storage_API

function storageAvailable(type) 
    try 
        var storage = window[type];
        var x = '__storage_test__';
        storage.setItem(x, x);
        storage.removeItem(x);
        return true;
    
    catch(e) 
        return false;
    

【讨论】:

以上是关于iOS Safari 隐私浏览 localStorage 和 sessionStorage 支持?的主要内容,如果未能解决你的问题,请参考以下文章

UIWebView 和 sessionStorage 中的隐私浏览模式

在浏览器上,Safari 的隐私浏览中的 sessionStorage 与 Chrome 的隐身模式和 Firefox 的隐私窗口不一样?

iPhone玩转safari浏览器的实用技巧

iOS Safari 未从第一次呈现完整页面

ios的坑

iOSSafari的小秘密你知道吗?