YahooのYUIやGoogleのGWTなど、多くのクライアント側のコードライブラリとツールキットは、ユーザーエクスペリエンスの状態履歴の管理をサポートしています。実装すると、ユーザーは[戻る]ボタンまたは[Backspace]キーをクリックすると、同じページで以前のアプリの状態に戻ることができます。
Google IOのこのビデオでは、このタイプの履歴管理の実装が強く推奨されており、実際にはリッチWebアプリの一部であると想定されています。
私はそのようなアプローチに価値があると思いますが、それが平均的なユーザーの期待を本当にサポートしているとは確信していません。StackOverflowでこの質問を調査したところ、「戻る」機能をオーバーライドすることの悪について多くの人からの怒りが見つかりました。このアプローチはそのカテゴリに分類されると主張できませんでしたか?
個人的には、「戻る」がページの状態を変更しただけで、本当に欲しかったのは最後の閲覧場所に戻ることだったので、何度もイライラしていました。 私の使用法では、Backの99%のユースケースは状態の変更ではなく、ページの変更です。
最後に、私の本当の質問は、「戻る」をオーバーライドせずに、リッチWebアプリの履歴管理をどのようにサポートできるかということです。
編集(ベストプラクティスのまとめ):
Michaelのブログ投稿を読んだ後、リンク以外のユーザーコントロール(ドロップダウン、テキストフィールドなど)を元に戻すには、Control-Zやボタン(広くサポートされているUIパターン)に依存することを考えています。
Backは、リッチWebアプリが提供する最も粗いビューの変更を元に戻す必要があります。ナビゲーションツリーのブランチを1つだけ記憶することで、ブラウザの履歴をエミュレートする必要があります。繰り返すと、常にルートに移動し、最後にアクセスしたページに移動します。