2017-01-23 139 views
1

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

(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); 
+0

为什么sessionStorage?会话存储将消失,为什么不使用localStorage – 1Mayur

+0

我以前从未使用存储。我刚刚搜索准备使用脚本。 – fakie

+0

我已将sessionStorage更改为localStorage。它正常工作。如果我关闭选项卡并在另一个选项卡中打开网站,则会恢复存储。但iOS仍然没有效果。在ios中的 – fakie

回答

0

问题是iOS Safari不支持beforeunload。页面隐藏解决了这个问题。