如何在私有模式下在 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 设备?
ios中safari无痕浏览模式下,localStorage的支持情况