2013-09-27 54 views
2

我希望用戶確認他想離開頁面。我這樣做,這樣一來使用jQuery:JavaScript - 用戶確認離開頁面時運行代碼

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

如果用戶說「是」,我想運行一個函數,一個Ajax請求以保存一些數據,在瀏覽器標籤頁關閉之前。這可能嗎?那麼,在那種情況下呢?

+0

什麼樣的功能? 'onunload'存在,但可能無法按預期工作。 – Ryan

+0

@minitech我需要做一個AJAX請求並保存一些數據。 – lawls

回答

2

你問的是不可能的。 beforeunload不允許你做自己的提示,然後根據問題的答案進行分支。它只允許您運行代碼或返回一個提示字符串,該字符串僅用於確定用戶是否從頁面導航離開。

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


僅供參考,原因beforeunload是如此嚴格,是因爲它具有防止濫用惡意網頁,當你想阻止你離開他們的網站。

1

正如jfriend00提到你正在嘗試做的事情是不可能的。當你按下後退按鈕時,你最好打賭是悲觀的。我的意思是:

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

這將完成是希望給時間你的Ajax調用發送,並通知新數據的服務器。我希望這是因爲瀏覽器會在您離開頁面時終止所有請求。

另一件需要注意的事情是,當用戶強行關閉瀏覽器時不會觸發。

相關問題