2010-06-14 92 views
2

我試圖實現沒有PHP的粘性窗體。我的設置是像JavaScript一樣的AJAX。在IE和FF上後退/前進工作正常,但刷新只適用於FF,而不是IE。無論我使用什麼緩存選項,我甚至設置IE的臨時文件選項永不檢查更新,並且輸入值在頁面刷新(刷新按鈕或F5)後消失了。帖子人們有相反的問題,並且不希望表單數據在整個頁面刷新過程中持續存在,也不會從瀏覽器緩存中讀取,但我確實需要。瀏覽器刷新後IE窗體輸入數據消失

任何幫助表示讚賞,謝謝!

ps。像HTML - input value kept after Refresh這樣的帖子正好與我的問題相反

+0

我也試過 「的行爲:網址( '#默認#savehistory')」和自動完成無效 – RWW 2010-06-14 23:02:53

+0

如果此功能非常重要,那麼只需編寫一個AJAX函數,將表單值轉儲到服務器上的會話中,然後使用另一個AJAX函數重新填充刷新時的字段。 – 2010-06-15 20:47:45

回答

5

IE/Chrome/Safari/Opera/etc有預期的行爲。

我認爲這是一個錯誤,FF單擊刷新時實際上並未刷新字段。

畢竟,刷新的目的是從服務器上轉儲你已經重新加載的東西。對於Firefox然後將任何已更改的信息/字段重新合併到表單中是意想不到的行爲,恕我直言,設計不好。

另請注意,這個問題已在Mozilla for 10 years上發生了爭執。它是很多重複錯誤報告的來源,被許多人認爲是一個嚴重的失敗,而且很坦率地說是一個完整的PITA。我不知道有多少次我不得不向非技術人員解釋爲什麼重新加載按鈕不能重新加載頁面。

最近我剛剛告訴他們Firefox重新加載按鈕已損壞,他們必須按住Shift鍵來點擊刷新或使用不同的瀏覽器。謝天謝地,我們有選擇。

---更新由於評論指出分不清什麼F5和Ctrl-F5是 -
所有的瀏覽器(Firefox的除外)治療作爲F5 「刷新」。這意味着如果緩存被禁用,則從緩存或從服務器重新加載頁面。 Firefox不會重新加載,但它也會重新填充您輸入內容的所有框......只要這些字段仍然存在即可。恕我直言,這是不好的行爲,因爲頁面可能已經改變,並且最終處於非常無效的狀態,其中一些事物被填充而另一些則沒有。

要清楚,緩存不包含您在頁面中輸入的內容;緩存只包含服務器發送給您的內容。因此,Firefox本身需要嘗試合併之前輸入和未提交的數據。再次,沒有其他瀏覽器這樣做,這是一個很混亂的來源。

所有瀏覽器(包括Firefox)都將Ctrl F5視爲「從服務器重新加載」。這會忽略任何已緩存的文件(圖像,CSS,JavaScript等),並將其從服務器拉下來。值得慶幸的是,當您執行Ctrl-F5時,Firefox不會將未提交的數據合併回頁面。

+0

一個bug?如何獲得IE7/8上的錯誤行爲? – RWW 2010-06-14 23:00:32

+0

讓他們點擊保存,然後刷新它。這將是預期的行爲。 – NotMe 2010-06-14 23:03:56

+0

http://stackoverflow.com/questions/1877795/how-to-force-internet-explorer-ie-to-really-reload-the-page 這樣的帖子表明IE從緩存中的表單值中讀取,儘管這對他們來說是不可取的,但我真的很喜歡這樣。 – RWW 2010-06-14 23:09:25

0

即使我同意克里斯,這會有幫助嗎?

http://snipplr.com/view/799/get-url-variables/

這將允許你存儲的東西在URL(如PHPS GET),並用JavaScript訪問它們

+0

感謝Chief和Chris,我使用userData來堅持輸入值。 – RWW 2010-06-15 22:40:04