ブラウザの更新アクションとブラウザを閉じるアクションの区別
ページの更新とブラウザの終了の区別を判断するのは、両方のアクションがトリガーとなるため、難しいように思えるかもしれません。 ONUNLOAD イベント。ただし、この難問には解決策があります。
解決策:
このアプローチは、HTML5 ローカル ストレージとサーバー/クライアント通信を利用します:
ONUNLOAD ハンドラー: ページ上で、疑似 JavaScript を使用してウィンドウにオンアンロード ハンドラーを追加します:
<code class="javascript">function myUnload(event) { if (window.localStorage) { window.localStorage['myUnloadEventFlag'] = new Date().getTime(); } askServerToDisconnectUserInAFewSeconds(); // Synchronous AJAX call }</code>
この関数:
ONLOAD ハンドラー: 本体に、オンロード ハンドラーを追加します:
<code class="javascript">function myLoad(event) { if (window.localStorage) { var t0 = Number(window.localStorage['myUnloadEventFlag']); if (isNaN(t0)) t0 = 0; var t1 = new Date().getTime(); var duration = t1 - t0; if (duration < 10 * 1000) { // Browser reload askServerToCancelDisconnectionRequest(); // Asynchronous AJAX call } else { // Tab/window close // Perform desired actions (e.g., do nothing) } } }</code>
この関数:
このソリューションは、タブ/ウィンドウの閉じ、リロード アクション、フォローしたリンク、送信されたフォームを区別するために機能します。 HTML5 ローカル ストレージをサポートするブラウザに適用できます。ただし、アンロード イベントに依存しているため、MSIE7 などの古いブラウザとは互換性がない可能性があることに注意してください。
以上がブラウザの更新とウィンドウの閉じを区別するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。