【问题标题】:IOS session storageIOS会话存储
【发布时间】:2017-06-08 13:56:40
【问题描述】:

我的代码有一些问题。我的 Web 应用程序在 AngularJs 1.5 上运行。我有一个带购物车的网上商店。问题是应该保存在 sessionStorage 中并在更新浏览器后恢复的数据在桌面浏览器上正常工作,但在 iOS 上完全不工作(经过测试的 Chrome 和 Safari)。 Android (Chrome) 也可以正常工作。从 iPhone 检查 MacOS Safari 中的代码时,控制台没有抛出任何错误。代码如下:

(function(angular, loc) {
    var app = angular.module('myModule', ['ui.bootstrap','ui.mask'])    

    app.run(function($rootScope) {
       window.onbeforeunload = function(event) {
          $rootScope.$broadcast('savestate');
       };
    });

    app.factory('basket', ['$rootScope', function($rootScope) {

        var basketData = {
            content: []
        };

        function saveState() {
            sessionStorage.basket = angular.toJson(basketData.content);
        }
        function restoreState() {
            basketData.content = angular.fromJson(sessionStorage.basket);
        }
        $rootScope.$on("savestate", saveState);

        if (sessionStorage.basket) restoreState();

        return basketData;

    }]);

    ...

})(angular, window.location);

【问题讨论】:

  • 为什么选择 sessionStorage?会话存储将消失,为什么不使用 localStorage
  • 我以前从未使用过存储。我刚刚搜索了准备使用的脚本。
  • 我已将 sessionStorage 更改为 localStorage。它工作正常。如果我关闭选项卡并在另一个选项卡中打开网站,则会恢复存储。但是iOS还是没有效果。
  • 在 ios 中你可以 debud 并查看存储是否存在数据吗?
  • MacOS Safari localStorage 获得购物篮 [...]。如果我检查 iOS Safari,localStorage 什么也得不到。空。

标签: javascript ios angularjs


【解决方案1】:

问题是 iOS Safari 不支持 beforeunload。 Pagehide 解决了这个问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-03-31
    • 2016-07-06
    • 2011-06-03
    • 2011-10-03
    • 1970-01-01
    相关资源
    最近更新 更多