先說一下各瀏覽器預設下,表單回退時的現象:
除過ff以為,其餘瀏覽器都會儲存表單的狀態,
ff加以後也儲存狀態成功
cache-control取值有如下幾個:public,private,no-cache,no-store,no-transform,must-revalidate,proxy-revalidate,max-age
cache-control屬於http1.1範疇,主流瀏覽器都支援http1.1,但是貌似只有ff遵守"cache-control".
如果想保留表單狀態,基本就可以.
如果想重置表單,射鵰兄寫過乙個方法如下:
1. safari 和 opera 是兩個極端,乙個完全還原,乙個完全保留。
2. firefox 下最簡單的辦法是設定 autocomplete = 『off』 屬性。(ff2下無效)
3. ie 必須在 settimeout 中還原表單值才有效。
4. chrome 除了不支援 onpageshow, 其它表現和 firefox 一致。
各瀏覽器響應cache-control如下:
在回退和前進時:
cache-control為no-store時:
ff: onload,domcontentloaded,頁面執行**和onpageshow都會被呼叫,否則只呼叫onpageshow(頁面狀態會被完美保留,類似於safari)
一種例外情況就是新增unload,有unload事件時,不管cache-control為何值,onload,domcontentloaded,頁面執行**和onpageshow都呼叫.
ie有沒有no-store,onload都會被呼叫.沒有onpageshow事件.
表單狀態保留
chrome和ie一樣.
safari:無論cache-control為何值,都不會觸發任何onload,domcontentloaded,頁面執行**,(有一種例外情況,當有unload事件時,onload,domcontentloaded,頁面執行**都會執行)
另外,safari雖然不觸發 onload,domcontentloaded,頁面執行**.但是頁面當前狀態會被完美保留(就像在兩個標籤頁之間切換一樣自然)
表單狀態保留
opera:
opera和其他瀏覽器不同之處,每次在位址列敲回車都算一次跳轉,雖然url沒變,但是歷史記錄卻有了(重新整理沒事)...
cache-control 無論為何值,都不會觸發onload,domcontentloaded,頁面執行**...window.onfoucs不執行
引用射鵰兄的話:忘掉opera......(如果想重置表單的話)
補充本人所用瀏覽器: ie7, ff3.5.1, safari4.0.2, opera10 beta, chrome2
網名:天堂左我往右
瀏覽器後退操作時,表單狀態的還原
測試頁面 no autocomplete test.html 結論 safari 和 opera 是兩個極端,乙個完全還原,乙個完全保留。firefox 下最簡單的辦法是設定 autocomplete off 屬性。ie 必須在 settimeout 中還原表單值才有效。chrome 除了不支援 o...
資料結構 棧 瀏覽器前進後退應用
瀏覽器前進後退 當你依次瀏覽a,b,c,然後回到b,再瀏覽d,就只能檢視a,b,d,了。原理 利用兩個棧a,b 瀏覽新網頁的時候,壓入棧a,清空棧b 前進,棧a獲取棧b的棧頂元素,棧b彈棧,並壓入棧a 後退,棧b獲取棧a的棧頂元素,棧a彈棧,並壓入棧b 題目 leetcode 5430.設計瀏覽器歷...
瀏覽器前進後退靜默重新整理頁面
window.location.reload 重新整理 location.reload 重新整理 window.location.go 1 前進一頁 window.location.go 1 後退一頁,值為n,即後退n頁,若n m,m為實際頁數,則會返回首頁 window.history.forwa...