簡體   English   中英

JavaScript-用戶確認離開頁面后運行代碼

[英]JavaScript - Run code when user confirms leaving page

我希望用戶確認他要離開該頁面。 我用jQuery這樣做:

$(window).bind('beforeunload', function(){ 
    return "Are you sure?";
});

如果用戶說“是”,那么我想運行一個函數,該函數在關閉瀏覽器選項卡之前發出ajax請求以保存一些數據。 這可能嗎? 在那種情況下又如何呢?

您的要求是不可能的。 beforeunload不允許您自己進行提示,然后根據問題的答案進行分支。 它僅允許您運行代碼或返回提示字符串,該提示字符串僅確定用戶是否離開頁面。

在您的特定情況下,我建議您始終在獲取此回調時保存數據(例如在文字處理器中自動保存)。 如果用戶選擇停留在頁面上並進行更多更改,則可以在以后離開頁面時再次保存數據的新狀態。 您將必須仔細測試幾個瀏覽器,以確保在beforeunload處理程序中啟動的ajax調用將正確完成。 看起來應該如此,但瀏覽器之間的實現可能有所不同。


僅供參考, beforeunload之所以如此嚴格,是因為它必須防止惡意網頁濫用,以防止您在需要時離開其網站。

正如jfriend00提到的那樣,您嘗試執行的操作是不可能的。 您最好還是在他們按下返回按鈕時感到悲觀。 我的意思是:

$(window).bind('beforeunload', function(){ 
    $.ajax({
        //Do ajax call to save
    });
    return "Are you sure?";
});

希望這樣做是為了給您的ajax調用發送時間,並將新數據通知服務器。 我之所以希望如此,是因為當您離開頁面時,瀏覽器會殺死所有請求。

請記住,當用戶強行關閉瀏覽器時,不會觸發此操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM