ブラウザ アクションの区別: 更新と閉じる
Web 開発では、ONUNLOAD イベント中のページの更新とブラウザの終了を区別することが課題となる場合があります。以下は、HTML5 ローカル ストレージとクライアント/サーバー通信を利用するソリューションです。
-
ページ アンロード時:
- onunload イベント ハンドラーを実装します。 myUnload() などのウィンドウ上で
- ローカル ストレージを設定しますflag myUnloadEventFlag を現在のタイムスタンプに設定します。
- AJAX 呼び出し (askServerToDisconnectUserInAFewSeconds()) を介して、数秒以内に切断 (ブラウザの終了など) が発生する可能性があることをサーバーに通知します。
-
ページ上Load:
- myLoad() などの onload イベント ハンドラーを本体に実装します。
- ローカル ストレージから myUnloadEventFlag を取得し、現在のタイムスタンプと比較します。
- 前回のアンロード イベントと現在のアンロード イベントの間の時間が 10 秒未満の場合、おそらくリロードです (askServerToCancelDisconnectionRequest() を介して切断リクエストをキャンセルします)。
- 時間が 10 秒を超える場合は、おそらくブラウザーです。クロージャ。
-
サーバー側:
- 切断リクエストをリストに収集し、タイマー スレッドを設定します (例: 20 秒ごと) を実行してリストを検査します。
- 切断要求の時間が経過したとき
- キャンセル要求を受信した場合は、対応する切断要求をリストから削除します。
このアプローチでは、タブ/ウィンドウの終了、リンクのフォロー、フォームの送信を区別することもできます。これは HTML5 ローカル ストレージをサポートするブラウザに適用でき、カーソル位置などの特定のイベント プロパティに依存するよりも信頼性が高くなります。
以上がWeb 開発においてページの更新とブラウザの終了を確実に区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。