ホームページ > ウェブフロントエンド > jsチュートリアル > フォームの送信やハイパーリンクをトリガーせずにブラウザ ウィンドウの閉じるイベントをキャプチャするにはどうすればよいですか?

フォームの送信やハイパーリンクをトリガーせずにブラウザ ウィンドウの閉じるイベントをキャプチャするにはどうすればよいですか?

Susan Sarandon
リリース: 2024-12-07 12:56:14
オリジナル
544 人が閲覧しました

How Can I Capture Browser Window Close Events Without Triggering on Form Submissions or Hyperlinks?

フォーム送信とハイパーリンクを除外しながらブラウザ ウィンドウを閉じるイベントをキャプチャする

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート