2016-08-01 6 views
0

ユーザーの操作に基づいてDOMを変更するページがあります。ただし、リンクをクリックすると、外部サイトに移動します。ユーザーが戻るボタンをクリックすると、私のページは再び表示されますが、DOMの変更は維持されません。ユーザーがページから離れて移動した場合のページの状態を維持するにはどうすればよいですか?

返品時にページを再構築できるように、ユーザーとのやりとりを把握する最善の方法は何ですか?

状態を維持してページを再構築するには、7-10変数を追跡する必要があります。

いくつかのアイデアは私が持っていた:

  • サーバー側セッション - 毎回変数の変化値サーバーへのコールバックを必要としますか?
  • クライアントサイドのクッキー - ユーザーがクッキーを無効にした場合はどうなりますか?
  • 隠しフォームフィールド - ほとんどの(すべて?)ブラウザはフォームデータをローカルにキャッシュするため、戻るボタンを押しても保持されますか?
+1

Cookie、ローカルストレージ、またはURLにページの状態を含める私は、ユーザーが互いに状態をリンクすることができるので、最近のルートのURLアプローチを好む。 – Shilly

+0

基本的には、それは異なります。この問題には多くの、多くの解決策があります。(特にここでは限られた情報があれば)実用的ではありません。 – Liam

答えて

1

Session変数試してみてください。それを思い出して、その後

sessionStorage.setItem('key', { "data": "mad data here" }); 

を:

var data = sessionStorage.getItem('key'); 

あなたはページのロード時などにjQueryを使用することができます。ほとんどで

document.load(function() { 
    var data = sessionStorage.getItem('key'); 
    if (data) { 
     data.doStuff(); 
    } 
} 
2

を私はこれを行う最善の方法は、pを表すことですURLの年齢状態。

理由はここにあります:URLは、このようなシンプルなコンセプトですので、この方法に関係なく、どのようなブラウザやどのようなプライバシーの設定(例えば許可クッキーとローカルストレージ)の作品

  • が使用されています。
  • ユーザーAが同じ状態のページを表示するユーザーBにURLを送信する場合、これは引き続き機能します。これはあなたが考えている方法のいずれにも当てはまりません。

追跡したい変数が特定のユーザー(またはセッション)に関連している場合は、ある種のセッションでこれを追跡することが賢明でしょう。これはサーバー側でもクライアント側でも構いません。

ローカルまたはセッション記憶域(HTML5 Local storage vs. Session storage)が可能ですが、いくつかの制限があります。

  1. (HTML5のローカルストレージは、古いブラウザでサポートされていないと私はプライベートモードでサファリを実行すると、ローカルストレージを許可しないことを例えば知っている)
  2. あなたの場合、すべてのブラウザやブラウザの設定では動作しません前のページにアクセスしていないために同じ状態のページが表示されず、ローカルまたはセッション記憶域が正しい値で埋められていないため、他のユーザーにリンクを送信します。
関連する問題