2017-01-23 157 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。頁面隱藏解決了這個問題。