2017-01-23 3 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

私はlocalStorageにsessionStorageを変更しました。それは適切に動作します。タブを閉じて別のタブでウェブサイトを開くと、ストレージが復元されます。しかし、iOSはまだ効果がありません。 iOSで – fakie

答えて

0

問題は、iOS Safariはbeforeunloadをサポートしていないということです。 Pagehideはこの問題を解決します。

関連する問題