瀏覽器前進後退時表單狀態的保持

2021-08-24 18:27:56 字數 1392 閱讀 2426

先說一下各瀏覽器預設下,表單回退時的現象:

除過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...