ホームページ >ウェブフロントエンド >jsチュートリアル >フォームの送信をトリガーせずにブラウザーのウィンドウ/タブの終了を確実に検出するにはどうすればよいですか?
Q: ブラウザ ウィンドウ/タブの終了イベントをキャプチャ
したいのですがブラウザーのウィンドウ/タブの閉じるイベントをキャプチャしますが、jQuery の「beforeunload」イベントもトリガーされます。フォームの提出。イベントをウィンドウ終了に制限するにはどうすればよいですか?
A: ウィンドウ終了イベントの分離
「beforeunload」はページからの離脱を検出しますが、フォームの送信とハイパーリンクを除外できます。次のコードを使用します:
var inFormOrLink; $('a').on('click', function() { inFormOrLink = true; }); $('form').on('submit', function() { inFormOrLink = true; }); $(window).on("beforeunload", function() { return inFormOrLink ? "Do you really want to close?" : null; });
jQuery バージョンの場合
var inFormOrLink; $('a').live('click', function() { inFormOrLink = true; }); $('form').bind('submit', function() { inFormOrLink = true; }); $(window).bind("beforeunload", function() { return inFormOrLink ? "Do you really want to close?" : null; });
1.7:
注: この解決策は、別のイベント ハンドラーが送信またはナビゲーションをキャンセルした場合に確認プロンプトが表示されないようにします。これに対処するには、送信/クリック イベントの時間を記録し、数秒以上後に「アンロード前」が発生するかどうかを確認します。以上がフォームの送信をトリガーせずにブラウザーのウィンドウ/タブの終了を確実に検出するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。