2016-04-16 20 views
1

文字列化されたJavaScriptオブジェクトをsessionStorageに保存するWebサイトがあります。デスクトップブラウザでもうまく機能します。データは、MDNで説明したように、ページの再読み込みにも存続します。Androidで予期せずにsessionStorageがクリーンアップされました

Android搭載端末では、ユーザーが別のタブから切り替わったとき、またはブラウザがバックグラウンドからフォアグラウンドに戻ったときにタブが再読み込みされることは珍しくありません。しかし、これはそうではないようです。セッションが新たに作成されたかのように、sessionStorageが欠落しています。

代わりにlocalStorageを使用することを考えましたが、セッションが閉じても期限切れになりません。それは本当にすべての私の問題を整理するわけではありません - 私はユーザーが複数のタブでそれを複数回開くことができ、それらのそれぞれの上で異なることを期待するので。

だから私の質問は以下のとおりです。期待通り

  1. は、上述のsessionStorageの振る舞いですか?そうでない場合、私はそれを修正するために何ができますか?
  2. 動作が期待どおりで、localStorageを使用する必要がある場合、個々のタブごとに保存されているオブジェクトをどのように識別できますか?

ご協力いただきありがとうございます。

答えて

0

はい、これがsessionStorageの動作です。この動作は期待されています。

sessionStorageはタブごとに一意です。ユーザーがタブを閉じると、sessionStorageが削除されます。つまり、セッション記憶域は、ユーザーがタブにとどまっている間だけ保存されます。

localStorageに保存するものは、明示的に削除されるまで続きます。加えられた変更は保存され、現時点での将来の訪問にも利用可能です。

はい、localStorageを使用して、セッションの最後にクリアする方がよいでしょう。

+0

ユーザーがタブを閉じると、sessionStorageの削除がわかります。しかし、私が説明したシナリオでは、ユーザーは実際にタブを閉じることはありません。彼/彼女はただ別のタブに切り替えるか、ブラウザをバックグラウンドに送り、後で戻ってきます。デスクトップ環境では、これらの操作のどちらでも、sessionStorageがクリーンアップされないことは確かです。モバイルでは動作が異なるようです。 – CLDev

+0

localStorageソリューションは、ユーザーが自分のWebサイトのインスタンスを1つしか持たない場合に機能します。私のウェブサイトが複数のタブで複数回開かれている場合、それぞれを一意に識別し、それぞれの保存されたオブジェクトを戻すための最良の方法は何ですか? – CLDev

関連する問題