2012-10-04 48 views
12

我明白,當你通過後退按鈕返回到頁面複選框將保持選中狀態。然而,使用jquery的addClass添加的類不會。有人能幫助我理解什麼時候通過後退按鈕返回時會持續嗎?另外,是否有一種方法可以保存變量的值,以便我可以使用變量值重新創建未保留的對象?通過後退按鈕返回時會持續什麼?

+0

+1了良好的措辭,非平凡的問題。注意詳細說明你的情況的具體情況,還是僅僅是一個「假設」問題? –

回答

13

Nothing存留 - 類不會持續,因爲DOM重新生成,JS變量不會持續,因爲代碼被重新執行等。與此同時,瀏覽器實現似乎幾乎同意保持用戶輸入儘管這種行爲不是任何官方規範的一部分,但爲了方便起見數據形式。

如果你需要一些數據來堅持在客戶端 - 機會是你建築做錯了什麼。你爲什麼試圖覆蓋瀏覽器的「返回」按鈕行爲,讓用戶回到任意狀態,而不是轉到以前的URL並重新呈現頁面?如果您的應用交互重,這個「返回」按鈕的行爲需要,您可能希望從有利於使AJAX請求的獨立頁面的用戶瀏覽和依靠像html5 history api允許執行任意代碼退避三舍將頁面置於所需的狀態。

你走不進什麼,你居然想到會儲存足夠的細節 - 也許localStorage或餅乾替代會更合適

更新:

我已經把一起a fiddle來測試遍歷歷史時表單數據將持續多久,並且隱藏字段分別是可供JS處理 - 儘管如此,仍然不是一個好主意

+0

你是說我可以使用隱藏的表單數據,因爲它會持續? – user584583

+0

@ user584583:我說的依賴於輸入字段可能會在瀏覽器中非常不一致並且不可靠 –

+0

說* Nothing *持續存在有點誤導。你已經指出了一些堅持的東西:用戶輸入的表單數據。還有兩件事情是滾動位置,對於移動設備來說,縮放級別。 – Nick

1

它非常依賴於事實,你怎樣對待或不鏈接,也就是說,如果你這樣做,你能堅持一切的哈希值。

編輯:

你必須要熟悉單頁應用(SPA)的概念。

這是所有可能的感謝改變location hash property和管理瀏覽器歷史記錄的能力。

爲了使這個簡單的有噸圖書館像Sammy.js

每次有用戶做一個動作你推新的狀態,因此你就可以處理按後退按鈕的時間。

爲了得到它的外觀的想法一樣,檢查以下jsfiddle

在代碼中你看到的設置routes

Sammy(function() { 
    this.get('#:folder', function() { ... }); 
    this.get('#:folder/:mailId', function() { ... }); 
})).run(); 

用於指定散列,即www.mygreatwebsite.com/#inbox/#1和您的應用程序將如何處理它。

還有更多的會在這裏,所以我的鏈接只是起點爲你去探索。

編輯:much simplier example of using sammy.js

+0

你能澄清你寫的內容嗎?哈希? – user584583

+0

@ user584583檢查我更新的答案。 – vittore

2

現代瀏覽器試圖持續越來越多。 Firefox在幾年前嘗試保留所有內容,包括類名稱更改,只要服務器指示該頁面可在HTTP標頭中進行緩存,並且網頁未註冊任何事件處理程序。當用戶按下後,Firefox會觸發onpageshowonpagehide

https://developer.mozilla.org/en-US/docs/Using_Firefox_1.5_caching https://www.webkit.org/blog/516/webkit-page-cache-ii-the-unload-event/

相關問題