首頁 >web前端 >js教程 >如何在不觸發表單提交的情況下可靠地檢測瀏覽器視窗/選項卡關閉?

如何在不觸發表單提交的情況下可靠地檢測瀏覽器視窗/選項卡關閉?

Patricia Arquette
Patricia Arquette原創
2024-12-20 22:25:17469瀏覽

How Can I Reliably Detect Browser Window/Tab Closure Without Triggering on Form Submissions?

確定瀏覽器視窗/選項卡關閉

問:捕獲瀏覽器視窗/選項卡關閉事件

我想要擷取瀏覽器視窗/分頁關閉事件,但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 版本

1.7:
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; 
});

注意:

如果另一個事件處理程序取消提交或導航,此解決方案可防止出現確認提示。為了解決這個問題,記錄提交/點擊事件的時間,並檢查「beforeunload」是否在幾秒後發生。

以上是如何在不觸發表單提交的情況下可靠地檢測瀏覽器視窗/選項卡關閉?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn