首頁 > web前端 > js教程 > 如何擷取瀏覽器視窗關閉事件而不干擾表單提交?

如何擷取瀏覽器視窗關閉事件而不干擾表單提交?

Susan Sarandon
發布: 2024-12-29 11:15:11
原創
446 人瀏覽過

How to Capture Browser Window Close Events without Form Submission Interference?

在沒有表單幹擾的情況下捕獲瀏覽器視窗關閉事件

通常希望在瀏覽器視窗(或選項卡)關閉時專門觸發一個事件。然而,通常用於此目的的 beforeunload 事件也會對表單提交做出反應。我們如何排除與表單相關的操作觸發此事件?

答案:

每當使用者離開目前頁面時,無論出於何種原因,都會觸發 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; 
})
登入後複製

或者,如果使用1.7 之前的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; 
})
登入後複製

在此解決方案中,當使用者點擊超連結或提交表單,則inFormOrLink 標誌設為true。在 beforeunload 事件期間,會檢查此標誌,如果為 false,則不會擷取該事件。

重要提示:

值得注意的是,其他事件處理程序可能會防止表單提交或導覽。在這種情況下,視窗關閉時 beforeunload 事件仍會觸發,導致確認提示遺失。為了緩解這種情況,請記錄點擊和提交事件的時間,並檢查 beforeunload 是否發生得晚得多,以便處理此類情況。

以上是如何擷取瀏覽器視窗關閉事件而不干擾表單提交?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板