ベストプラクティス:ブラウザと Web サイトのナビゲーションの同時実行を処理する方法
-
09-06-2019 - |
質問
これはすべての Web 開発者にとってよく知られた問題です。この問題に対する良い解決策を見つけようとした限り、何もありませんでした (または少なくとも私は見つけることができませんでした)。
次のことを仮定してみましょう。
ユーザーは期待どおりに動作しません。 私が取り組んでいる実際のプロジェクトでは、Web ポータル内のナビゲーションを使用しています。しかし、ユーザーがブラウザの戻るボタンを使用すると、すべてが危険になり[?]、結果は必ずしも予測可能ではありませんでした。
Struts フレームワークを使用し、バック URL をフォームに保存しました。バック URL が必要な場所では、このフォームのバック URL がレンダリングされています。この情報のフィールドは 1 つしかないため、複数のステップを戻すことはできませんでした。
「struts-flow」を変更すると、 違う形 - この情報は失われます。
ユーザーが敢えて ブックマーク Web アプリ内のどこか - この情報は設定されていない可能性があり、結果は再び予測不能になるか、柔軟性が不十分になります。
私の「解決策」:
ユーザーが訪問したすべてのナビゲーション関連ページを 積み重ねのような へのストレージ セッション. 。これは、ナビゲーション パスが収集され、後のナビゲーションのために保存されることを意味します。
Web アプリ内のどのページでも、戻るナビゲーションが含まれる場合は、スタック コンテンツを URL にレンダリングする自作のタグを使用しました。
以上です。このバック URL がクリックされると、ユーザーがクリックしたバック URL のコンテンツがスタックに書き込まれます (バックリンクがレンダリングされると、スタックからのすべての情報が保持されます)。
これは非常に明白です。なぜなら、リンクのクリックは明確な状態であり、Web 開発者は、ユーザーが今この瞬間どこに「いる」かを正確に知っており、ユーザーが以前に行ったこと (例:ブラウザの戻るボタンを複数回押します)。次に、ナビゲーション スタックがこの新しい状態に基づいて構築されます。
再開する:これが最善の解決策ではないことは明らかです。ただし、ページ パラメーターやその他の便利なもの (さらなる開発が可能) などの追加情報をスタックに保存することができます。
それで、この問題に対するあなたの解決策は何でしたか?
乾杯、
マナ
解決
スタック ソリューションは面白そうですが、ユーザーが別のタブやブックマークを使用して「並行して」移動することを選択した場合、おそらく機能しなくなるでしょう。
申し訳ありませんが、なぜ各ユーザーに対してこのすべての状態を保持する必要があるのか、本当に理解できません。理想的には、ウェブは以下に従うべきです REST原則 そして完全に無国籍になる。したがって、各ユーザーのナビゲーション履歴を保持することなく、単一の URL で単一のリソースを識別する必要があります。
Web アプリが AJAX に大きく依存している場合は、インターフェースの各変更がページ URL の変更に反映される GMail のようなものを実装してみることもできます (確かに、それほど簡単ではありません...)。したがって、各ページは現在の URL によって識別され、ユーザーは通常どおり同時に移動したり、戻るボタンを使用したりできます。