1

ユーザーがページから離れてから戻るボタンを使用して戻ってきたときに、ページにデータを復元せずにデータを復元できるように、データを永続化できるようにするために、非表示のフォームにデータを保存するというトリックを使用しています。再びサーバーにヒット...

ただし、このトリックは、ユーザーが更新または再読み込みをクリックしたときに同じことが発生することを意味します... (Firefox のシフト再読み込みでも)。ユーザーが戻るボタンをクリックするのではなく、リロードをクリックしていることを検出して、リロード時に最初からやり直すことができますが、ユーザーが移動して戻ったときに以前のデータを復元したいと考えています。

これを行う方法はありますか?onbeforeunload イベントなどを調査していますが、まだ何もわかっていません。

「なぜ?」というジョシュの質問に対処するために編集されました。

このページは、一連の AJAX フィルターを含む検索結果ページです。ユーザーは、必要な検索結果のセットだけを取得するためにフィルターを微調整するのにかなりの時間を費やす場合があります。その後、ページから離れてクリックするか、URL バーに新しいアドレスを入力すると、...このようなことをしないと、最初からやり直して、すべてのフィルタリングをやり直す必要があります。これは、ユーザビリティ テストのために参加させたユーザーにとって非常に苛立たしい経験でした。

これは、技術に精通したユーザーであれば、クリックしたり入力したりせずに新しいタブを開くだけで解決できるタイプのものですが、残念ながら大多数のユーザーは技術に精通していないため、明らかな解決策はページを元の状態に戻すことです。ユーザーがページに戻ったときのフィルター/結果。

一方、ユーザーがページをリロードする理由として考えられるのは、次の 2 つです。

  1. 検索ページの結果には時間に敏感な要素が含まれており、ユーザーはより最新の結果を得たいと思うかもしれません。
  2. ページが正しく読み込まれなかったというエラーが発生する場合があります。どちらの場合も、ページを保存された状態に復元すると、期待していた新しい/修正された結果ではなく、同じ (古いおよび/または壊れた) 結果が得られます。

それが解決することを願っています。

4

3 に答える 3

2

リクエストとともに送信されたヘッダーを確認することで、サーバー側でこれを行うことができます。ユーザーが更新またはハード更新を実行すると、特定のヘッダーが使用されます。

Fiddler または Firebug を使用してヘッダーを調べ、使用できるものを確認します。

少なくとも Firefox では、F5 を押すと、

Cache-Control: max-age=0

送信するヘッダー。Ctrl-F5 を実行すると、これらが送信されました

Pragma: no-cache
Cache-Control: no-cache

他のブラウザーの動作の内訳については、別の質問に対するこの優れた回答を確認してください。

于 2009-08-14T20:47:07.513 に答える
1

フォーム ベースのアプローチが機能しない場合は、RSHなどの「ajax 履歴」ライブラリを調査することをお勧めします。

于 2009-08-14T22:00:29.377 に答える
0

フォームを含むページをロードすると、以前に保存した値が入力されますが、セッションからそのデータが消去されます。2 回目のページ更新では、保存されたデータが見つからず、空白のフォームが表示されます。フォームが再送信された場合は、新しいデータをセッションに保存し、戻るボタンを押す準備をします...

于 2009-08-14T20:44:50.653 に答える