我希望用戶確認他想離開頁面。我這樣做,這樣一來使用jQuery:JavaScript - 用戶確認離開頁面時運行代碼
$(window).bind('beforeunload', function(){
return "Are you sure?";
});
如果用戶說「是」,我想運行一個函數,一個Ajax請求以保存一些數據,在瀏覽器標籤頁關閉之前。這可能嗎?那麼,在那種情況下呢?
我希望用戶確認他想離開頁面。我這樣做,這樣一來使用jQuery:JavaScript - 用戶確認離開頁面時運行代碼
$(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調用發送,並通知新數據的服務器。我希望這是因爲瀏覽器會在您離開頁面時終止所有請求。
另一件需要注意的事情是,當用戶強行關閉瀏覽器時不會觸發。
什麼樣的功能? 'onunload'存在,但可能無法按預期工作。 – Ryan
@minitech我需要做一個AJAX請求並保存一些數據。 – lawls