如何在私有模式下在 iOS Safari 浏览器上启用 LocalStorage?

Posted

技术标签:

【中文标题】如何在私有模式下在 iOS Safari 浏览器上启用 LocalStorage?【英文标题】:How to enable LocalStorage on iOS Safari browser on private mode? 【发布时间】:2017-05-19 18:53:25 【问题描述】:

我正在开发项目 SPA 角度应用程序,它需要浏览器的 localstorage 来存储值。我们注意到 ios 不允许在私密模式下访问 localstorage

我们通过检查 localstorage 的浏览器兼容性解决了这个问题。如果它不允许本地存储,我们使用 AngularJS 的$rootScope 对象来临时存储值。

这种方法的唯一挑战是当页面刷新时数据将被清除,这是有意义的,因为我们使用的是$rootScope,这将在页面刷新时被销毁

这是我的问题:

    他们是否可以通过javascript 启用localstorage? 他们有更好的替代方法吗?理想情况下,我们希望在页面刷新时保留值。这怎么可能? (用localstorage好不好)

谢谢, 悟空

【问题讨论】:

【参考方案1】:

尝试改用 cookie。

$cookies 提供标准的 getter 和 setter api。

以下是如何使用它们的示例:

angular.module('cookiesExample', ['ngCookies'])
.controller('ExampleController', ['$cookies', function($cookies) 
  // Retrieving a cookie
  var favoriteCookie = $cookies.get('myFavorite');
  // Setting a cookie
  $cookies.put('myFavorite', 'oatmeal');
]);

这里是方法的完整列表:

方法

get(key);

返回给定 cookie 键的值


getObject(key);

返回给定 cookie 键的反序列化值


getAll();

返回一个包含所有 cookie 的键值对象


put(key, value, [options]);

为给定的 cookie 键设置一个值


putObject(key, value, [options]);

为给定的 cookie 键序列化并设置一个值


remove(key, [options]);

删除给定的 cookie

【讨论】:

【参考方案2】:
    不,您不能通过js 或其他黑客方式启用localstorage。 我认为最好的选择是使用cookies

您可以从这里https://www.w3schools.com/js/js_cookies.asp了解如何使用cookies

对于angularJS https://docs.angularjs.org/api/ngCookies/service/$cookies

【讨论】:

以上是关于如何在私有模式下在 iOS Safari 浏览器上启用 LocalStorage?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 css 编写模式处理 safari ios 设备?

如何在 iPhone Safari 上调试网页

iOS Safari不会首次呈现整个页面

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

UIWebView 和 sessionStorage 中的隐私浏览模式

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