2009-10-19 80 views
4

我有哪裏偶爾用戶關閉其瀏覽器/標籤和信息,他們鍵入消失任務管理應用程序的問題,因爲他們不小心關閉瀏覽器/標籤,導致丟失了他們輸入的文字(有些可能會花半個小時輸入文字)。策略保存表單數據(在標籤/瀏覽器關閉)

所以我必須提供一個解決方案,我有幾個想法,但想上最好的輸入一起去,或者如果你有一個更好的解決辦法,讓我聽你的。

選項1:

  • window.onunload或可能window.onbeforeunload事件調用確認()對話框,第一測試任務記錄區域是否有任何文字,而不是空白。如果不是空白,請調用window.confirm()並詢問用戶是否要在不保存日誌的情況下關閉標籤頁/窗口。

我與選項#1值得關注的是,這可能是用戶的侵入。

選項2:

  • 在同一事件,不調用任何確認(),而是有力地保存在cookie中的任務記錄區域中的文本。然後可能會提供一個按鈕,嘗試從同一頁面上的cookie中恢復任何已保存的任務信息,因此點擊該按鈕可以解析cookie並檢索信息。
+0

「用戶侵入」是什麼意思? –

+0

那麼,你知道警報和確認窗口是如何自然討厭的,但這可能是該規則的唯一例外?我不知道。 –

+0

如果他們做的事情是「正確的」,那麼沒有對話,對嗎?如果他們鍵入東西,忘記保存並丟失他們的工作是不好的,對吧?詢問他們是否想要保留或忽略未保存的更改有什麼不妥? –

回答

2

如果用戶是足夠愚蠢提交他們一直在做之前可以離開,那麼他們應該不會介意的入侵,詢問他們的意思做一些事情,顯然是愚蠢的。

另外,SO在導航時使用確認對話框,並且大多數(某些)用戶在這裏都是非常聰明。

這是最容易使用,並可能會幫助用戶更多。

如果有人寫了一段長文,然後關閉瀏覽器而不提交它,他們可能會更樂意將問題排序在那裏,然後在第二天早上找出他們沒有做到這一點......

2

我會研究你使用特定的Web服務器/語言AJAX框架。 AJAX將允許您保存輸入的表單數據(例如,這就是Google文檔的工作原理)。

+0

我知道如何做到這一點,但我覺得它會嚴重阻塞服務器 - 我的意思是......爲幾十個用戶綁定一個關鍵事件併爲每個用戶每隔幾秒發送一次ajax請求? –

+0

你不必在keyup上做,你可以在模糊的情況下做到這一點。這至少意味着用戶已經完成了他們在特定領域的工作,並且值得保存。 –

+0

Right..maybe「因爲它是打字」太多了。如果您每隔60秒,每隔5分鐘等一次,就會在計時器上執行此操作,當且僅當文本發生變化時,這可能也適用於您的場景。 – noctonura

6

window.onbeforeunload事件有點奇怪。如果你爲它定義了一個處理程序,瀏覽器將顯示一條關於通過從頁面導航丟失數據的通用消息,並將你從處理函數返回的字符串插入到消息的中間。在這裏看到:

alt text http://img291.imageshack.us/img291/8724/windowonbeforeunload.png

所以我們要做的:當我們知道在頁面上的東西是未保存的,我們設置:

window.onbeforeunload = function(){ 
return "[SOME CUSTOM MESSAGE FROM THE APP]"; 
} 

,一旦用戶保存,我們知道我們不需要向他們展示的消息,我們設置:

window.onbeforeunload = null; 

這是一個有點侵入,但它比你的用戶不小心丟失數據更好。

相關問題