2

さまざまな状況で AJAX アプリケーションで戻るボタンを機能させるためのいくつかのアプローチに精通していますが、特定のシナリオで適切に機能するソリューションは見つかりませんでした。

私が扱っているページは、サイトの検索インターフェイスです。通常の検索ボックスに用語を入力し、[移動] をクリックして検索結果ページに移動します。検索結果ページには、探しているものを見つけるために検索結果をフィルタリング/ソートするための UI コントロールがたくさんあります。これらのコントロールによってトリガーされる操作は、完了するまでに (比較的) 長い時間がかかる場合があります (例: 数秒)。

ユーザーが最初に結果をフィルタリング/ソートしている場合、この待ち時間は問題ありません...素敵なAJAXスピナーなどがあります...しかし、ユーザーが検索結果をクリックしてから[戻る]ボタンをクリックすると、ページは、クリックしたときの状態に即座に復元されます。

IFRAME/フラグメント識別子をページ履歴の辞書として使用して状態を復元できますが、最終的には、ユーザーが最初に戻るボタンを押したときに最初のページが読み込まれ、(再) AJAX クエリを作成して取得します。ページの状態が戻ると、AJAX スピナーがトリガーされ、さらに数秒間待機します。

ユーザーが BACK ボタンでページに戻ったときに、この種のページの 2 段階のロードを必要としないアプローチはありますか?

追加するために編集:私はjqueryに部分的ですが、他のライブラリ/ツールキットに依存するソリューション、またはスタンドアロン/生のjavascriptであるソリューションに満足しています。

追加するために編集: Cookie/セッションを回避しようとしていることを追加する必要がありました.

編集:マット、提案された解決策(フラグメント識別子を介してページ変更イベントをトリガーする)について詳しく説明できますか?これが同じページで戻るボタンのクリックにどのように役立つかがわかりますが、特定の結果をクリックした後に検索結果ページに戻ることはありません。

4

6 に答える 6

1

クッキーを使用するだけです。

于 2008-08-29T09:23:52.483 に答える
1

YUI Browser History Managerを調査しましたか?

于 2008-11-28T17:41:18.807 に答える
0

localStorageオブジェクトを使用してみてください。これは、クロスブラウザ ライブラリjStorageWEBSHIMS json-storage です。

于 2012-04-19T18:08:45.493 に答える
0

「URL アプローチの末尾にある # に情報を追加する」を使用して、ページ変更イベントをトリガーするのに役立ちますか。

そうすれば、戻るボタンをクリックしても実際にはページが変更されず、最初のページを読み込まなくても状態を復元できるはずです。

于 2008-08-29T09:35:34.297 に答える
0

ユーザーのプロファイルに関連付けられている永続的なものを使用します。

Cookie とセッションは良いアイデアですが、それらをデータベースに保持することもできます。これにより、さまざまなブラウジング セッションでユーザーのフィルタリング設定を保存できるという利点が追加されます (たとえば、オフィスで何かを探していて、家に帰っても検索を続けることにした場合)。

それはすべて、フィルターと天気の複雑さに依存するかどうかに依存します.

于 2008-08-29T09:50:35.243 に答える
0

追加するために編集: Cookie/セッションを回避しようとしていることを追加する必要がありました.

ランダム トークンを作成し、それをフラグメント識別子に割り当てることができます。

  • フラグメント識別子が設定されていない場合は、最初のページの読み込み時にトークンを作成します
  • ナビゲートする前に、すべての一時 ajax データをそのトークンをインデックスとして Cookie に保存します。
  • 打ち返すとき、フラグメント識別子が設定されている場合は、Cookie 内の対応するトークンからデータを読み込みます。
  • 「時間」フィールドを追加して、トークンなどを期限切れにすることもできます...

サンプル Cookie (JSON):

{"ajaxcache":[{"token":<token>,"time":<time>,"data":<data>}, ... ]}
于 2008-11-07T02:59:08.910 に答える