我已經在.jsp/JSTL/EL中實現了一個可以正常工作的網站。但是,根據瀏覽器(!),後退按鈕的行爲有所不同。另一個複選框/後退問題
我確實注意不要有雙重帖子(這樣瀏覽器不會警告用戶他會再次發帖),但顯然這導致了另一個問題:如果我使用Chrome後退按鈕,那麼複選框的值不正確。
這裏的情況我瞭解:
- 用戶頁面/第1頁上然後檢查複選框
- 一個POST製成,有一個HTTP重定向
- 一個GET製成,頁/2頁顯示細膩,通過選中複選框,因爲它應該是
- 用戶點擊後退按鈕
- 使用r回到/page1,因爲它是之前複選框被選中(這正好是後退按鈕的預期行爲)但複選框仍然被選中。
從我看到服務器的日誌和我的應用程序的日誌,據我所知,沒有任何東西傳輸到網絡服務器。所以事情正在發生,純粹是在客戶端。
這是怎麼回事,我該如何解決這個問題? (不使用框架,它不是這個問題是關於什麼的)
編輯我也許應該給予更多的信息... web應用程序已經在每個網頁中投放--in一個有點「神奇」小網址般的時尚 - 對應一個國家。一切都是「公開」的:任何人都可以看到任何人的網頁(但它可能是私人的,使用私人網址)。無論如何:如果用戶分享其頁面的任何,則當另一用戶打開頁面時,它應該正確顯示並且複選框是正確初始化。
所有這一切都說,問題不在於服務器端,其中「狀態」以某種方式不正確:如果用戶A共享頁面.../1d2eof,則用戶B打開頁面.../1d2eof應該看到正確的頁面。
只有當用戶使用後退按鈕時,這種情況纔會變得混亂。請記住,在任何時候,我都可以在服務器端訪問整個頁面的狀態。然而,我的問題是,顯然當使用後退按鈕什麼都沒有聯繫我的服務器,所以我沒有機會爲使用後退按鈕的用戶「修復頁面」。
也許雙重定向會有幫助!?
燁我有這麼放回文件/複選框等整個狀態,他們應該不是一個問題,但我只是不知道如何當用戶按下後退按鈕檢測:(我不明白Zack在其他答案 – 2012-03-16 18:41:44
中粘貼的代碼顯然老版本的Firefox並沒有恢復表單的最終狀態: - /所以行爲似乎因瀏覽器而異: - /我想我應該找到一種方法來檢測後退按鈕被按下 – 2012-03-16 18:42:38
@CedricMartin:啊,我明白了關於Zack Macomber的鏈接:它是關於「竊取」後退按鈕:它提供了一種欺騙瀏覽器觸發當前頁面上的可檢測事件*,而不是返回頁面*,當用戶單擊後退按鈕時,我不知道這是否會爲你工作。 – ruakh 2012-03-16 18:45:15