フォーム送信とハイパーリンクを除外しながらブラウザ ウィンドウを閉じるイベントをキャプチャする
jQuery の beforeunload イベントは、ユーザーがページから離れたときを検出するように設計されています。ただし、このイベントはフォーム送信時にもトリガーされるため、特定のシナリオでは望ましくない場合があります。この記事では、beforeunload イベントからフォームの送信とハイパーリンク (他のフレームからのものを除く) を除外する方法について説明します。
これを実現するには、まず変数 inFormOrLink を false に初期化します。ユーザーがハイパーリンクをクリックするかフォームを送信すると、inFormOrLink を true に設定します。
beforeunload イベント ハンドラー内で、inFormOrLink の値を確認します。 true の場合、「本当に閉じますか?」というメッセージでユーザーに確認を求めます。逆に、inFormOrLink が false の場合は、null を返して確認プロンプトを抑制します。
jQuery バージョン 1.7 以降の改訂されたコード スニペットは次のとおりです。
var inFormOrLink = false; $('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 バージョン 1.7 より前の場合は、次を使用します。次のコード:
var inFormOrLink = false; $('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; });
このアプローチは、フォームの送信を除外しながら、ブラウザー ウィンドウの閉じるイベントを効果的にキャプチャします。およびハイパーリンク (他のフレームからのリンクを除く)。
以上がフォームの送信やハイパーリンクをトリガーせずにブラウザ ウィンドウの閉じるイベントをキャプチャするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。