2013-01-11 36 views
1

我正在用角落中的後退按鈕創建一個頁面。如果爲第一個後退按鈕啓動的頁面應該隱藏。如果用戶瀏覽頁面返回按鈕應顯示。如何檢查window.history.back在javascript中有價值

我使用的代碼

(window.history.length > 1)?$("#back").show():$("#back").hide();

但我的問題是, window.history.length是不斷增加。

但我的要求是當沒有頁面回去時,然後返回按鈕應該再次隱藏。如何實現這一目標?

+0

這是你自己分頁的東西,例如用<< << 1 2 3 ... n >> >>類型導航系統?大概你會知道你正在打開哪個頁面,當你在頁面1或者頁面n時,只需要隱藏適當的按鈕。 –

+1

歷史API沒有提供找出當前頁面在歷史列表中的位置的方法。 – Barmar

回答

1

你有更多問題。如果用戶來自谷歌會怎麼樣?會有窗口歷史記錄。如果用戶去你的網站,然後去谷歌,然後回來?

如果它只是@Marc B所描述的導航系統,那麼很容易,您知道用戶來自哪裏以及如何返回(不要直接使用歷史記錄)。但是,如果它是一個後退按鈕,無論用戶點擊什麼鏈接到您的網站...它變得更加複雜。由於隱私限制,您無法訪問用戶的實際URL歷史記錄(只是長度),並且如果您使用捕獲window.unload事件,則無法訪問他們正在導航的任何url。所以你只剩下有限的選擇。

一個選擇是將每個頁面加載的窗口位置記錄到您保存在本地存儲或cookie中的數組中。那麼你應該使用這個數組來管理你的歷史狀態,而不是依靠window.history。當用戶點擊您的後退按鈕時,您只需彈出他們訪問過的網站上的最後一個網址,並在那裏瀏覽它們。請記住,首頁加載會將一個項目放入歷史數組中,因此根據您檢查的位置來查看是否應顯示或隱藏曆史記錄按鈕,您將比較歷史數組的長度爲0或1。