1

次の問題があります。これは、ユーザーがアプリケーションにログインして履歴を登録したときの状況です。ワークフローは次のとおりです。 1. ユーザーがすでにログインしているかどうかのチェックがあります。つまり、ユーザー オブジェクトがセッション内にあるかどうか、そうでない場合は、ログイン フォームがロードされ、新しいトークンが追加されます (History.newItem("login"))ユーザーはアプリケーションのメイン フォームに自由に入力でき、トークンが追加されます (History.newItem("main"))。ユーザーがパスを入力し、ユーザーが正常に入力された後、新しいトークンが追加され (History.newItem(main))、アプリケーションのメイン フォームに入ります。

メインフォームが表示され、ユーザーがブラウザで「戻る」をクリックすると、スタックから「ログイン」トークンが取得され、ログインフォームが読み込まれるという問題があります。ただし、ユーザーが「進む」ブラウザ ボタンをクリックすると、「メイン」トークンが取得され、メイン フォームが表示されると仮定します。私はこのシナリオが好きではなく、やりたいと思っています: 「戻る」ボタンの後にダイアログボックスが表示され、「アプリケーションを終了しますか?」と尋ねます。「はい」と「いいえ」ボタンがありますが、何らかのアクションを実行するために通常のログインまたは「戻る/進む」ログインを行っているかを識別できません。

アドバイスやアプローチ..おそらく私のデザインは間違っています..

前後のアクションを区別する方法はありますか?

4

1 に答える 1

4

これをすべて回避したい場合は、履歴に「ログイン」を入れないでください。

この場合、ログイン パネルをモーダル ダイアログとして実装することをお勧めします。そのため、ユーザー (またはアプリケーション) がログインを要求すると、モーダル ダイアログにログイン入力フィールドが表示されます。ログインが完了したら、ダイアログを閉じて現在のページをリロードします (ログインによる変更を反映するため)。

「History.fireCurrentHistoryState()」を使用して、現在のページを強制的にリロードできます。これは履歴ハンドラーを呼び出しますが、履歴には影響しません (履歴スタックにトークンは追加されません)。

于 2011-06-29T12:09:44.757 に答える