2010-06-08 195 views
0

在用戶進入輸入頁面之前,我使用小型JS將項目標記爲「單擊閱讀」。 當用戶點擊後退時,我用的removeClass似乎沒有保持其效果。單擊後退按鈕後處理GUI

有沒有辦法強制這一點上返回行爲?

回答

0

當用戶點擊返回時,瀏覽器從頭開始重新加載頁面(除了Firefox,它會記住表單的值),舊頁面的Javascript和它的效果都消失了。

要解決此問題,您可以將頁面的狀態保存在cookie中,然後在頁面加載並恢復狀態時使用Javascript cookie library讀取cookie。

+0

針對該特定問題的解決方案過於複雜,但謝謝:) – 2010-06-08 13:46:24

+0

如果使用庫,Cookie根本不復雜。 – SLaks 2010-06-08 13:54:02

0

使用JS完成此操作的唯一方法是將Cookie與用戶訪問的項目一起存儲,並在加載頁面時將cookie中的條目標記爲「已訪問」。缺點是在加載到視圖中的項目和被標記爲已訪問的項目之間會有一個小的延遲(有點像StackOverflow中的一個,帶有用戶的忽略和最喜歡的標籤)。

除此之外,您可以使用一些服務器端代碼記住會話中訪問的條目。

如果條目<一個>元素,你可以與他們的風格:

a:visited {} 
+0

爲什麼downvote? – 2010-06-08 13:47:19

1

IE 8,Firefox和其他瀏覽器記住上一回按下按鈕形式的條目。您可以使用它在頁面中存儲用戶刷新或返回時的某些狀態。

在頁面上創建一個隱藏的textarea,並在那裏存儲你的額外狀態。我使用onbeforeunload來存儲狀態,然後使用onload再次將其拉出。

不幸的是IE6和7不支持記住你的表單值或重新加載,所以如果你關心那些瀏覽器,你將不得不採取類似於cookies的方式。請記住保存在cookie中的數據量很小,因爲它會在每次請求時發送到服務器。你也會想用某種方式清除那個cookie。

當我想保持大量不同的狀態時,我使用JSON.stringify from Douglas Crockford's json2.js

+0

感謝您的幫助! – 2010-06-08 13:45:37

0

建議您可以使用cookies。或者,如果您不想這樣做,可以將信息存儲在隱藏表單域中,並且在頁面加載(或domready)時讀取該值並根據需要設置頁面狀態。