2013-05-15 63 views
1

場景:我有一個web應用程序,我將讓用戶1設置表單中的一些值(#div1)並將其顯示給下一個用戶(來到瀏覽器在用戶1沒有關閉瀏覽器之後)(顯示將顯示在#div2中,而#div1將被隱藏)。但是,如果用戶2刷新瀏覽器,則所有值都將消失。jQuery:試圖刷新或關閉瀏覽器時提示用戶

問題:當用戶嘗試刷新瀏覽器時,如何提醒用戶?網絡應用程序將在Midori上,而網絡服務器將爲CherryPy

或者有沒有辦法保存會話,無論刷新?如何?

+3

你是什麼意思,「對下一個用戶」?我真的不明白這裏發生了什麼...... – Amadan

+0

只是將它保存在會話中。只要沒有破壞會話你的價值將被保存。 –

+0

@Amadan只是一個場景。請參閱編輯:)希望解釋:)或者你更喜歡整個故事? – yvonnezoe

回答

1

您已經提出了兩個問題。

爲先,「我怎麼能當他試圖刷新瀏覽器提醒用戶?」:

beforeunload功能,包括以下內容(與任何你想要的文字,很明顯):

confirm('If you refresh the page your data will be lost'); 

這將創建一個提醒'確定'和'取消'按鈕。如果用戶按下'OK',頁面會繼續執行它(在你的情況下,刷新);否則,它返回false。

對於第二個問題,「或者有沒有辦法保存會話而不管刷新?」:是的。

編輯:你現在問了第三個問題,「怎麼做?」但是這超出了StackOverflow的問答格式的範圍。快速回答是有幾種方式,包括cookies和DOM存儲以及使用後端。試一試,如果遇到問題,請提出具體問題,我們會提供幫助。

+0

我想他問的是如何在頁面刷新或重新加載時顯示此確認框? –

+0

謝謝您的詳細解答:) +1並且對於問題編輯抱歉:無論如何,仍然感謝您的快速回答。將進一步研究更多關於你之前提到的那些:) – yvonnezoe

6

您是否在尋找

window.onbeforeunload = function(){ 
    return "Are you sure you want to close the window?"; 
} 
+0

真棒! :D謝謝。但它給我的提示是「此頁面要求您確認您要離開 - 您輸入的數據可能未保存。」 – yvonnezoe

0

下面應該工作:

window.addEventListener("beforeunload", function (e) { 
    var message = "Are you sure you want to leave?"; 

    (e || window.event).returnValue = message;  
    return message;         
}); 

對於你的問題的第二部分,有幾個選項。可能最簡單的是localStorage:

// after form updated 
if (typeof Storage !== 'undefined') { 
    localStorage.formData = formData // where formData is a string containing all the data from the form 
} 

// on page load (e.g. after refresh) 
if (typeof Storage !== 'undefined') { 
    populateForm(localStorage.formData); // where populateForm is a function that can take the string you saved and does what you want with it (sorry, I didn't really understand that part of the question) 
} 
+0

*應該*工作,但你真的嘗試過嗎?我做過了(從MDN複製,就像我確信你做的那樣),但我卻無法完成它的工作。 –

+0

在Chrome中完美適用於我 - 您正在使用哪種瀏覽器? –

相關問題