2014-04-29 121 views
2

上下文:我有一個顯示產品列表的應用程序。點擊產品時,您將進入顯示有關該產品的更多信息(包括可用顏色)的新頁面。更新當前頁面URL但保持後退按鈕狀態

單擊顏色時,會顯示關聯的產品圖像。 URL哈希也用顏色信息更新,所以當重新加載頁面時,將顯示特定的彩色圖像。

問題:當用戶點擊了一堆的顏色,然後嘗試使用返回按鈕返回到產品列表頁面,網址是基於點擊顏色時就狀態的變化更新。我想更新我的代碼,以便當用戶點擊後退按鈕時,他們會被髮回到產品列表。

本質上我想更新網址哈希值並保持後退按鈕的原始狀態。

這是我使用更新我的網址代碼:

window.location.hash = color_parameter 

是預期的功能實現,而無需使用window.history/history.js?如果是這樣,怎麼樣?如果沒有,我需要實現哪些功能才能完成這項工作,並仍然需要跨瀏覽器友好?

我寧願不添加後退按鈕變成指向document.referrer

+0

您可以嘗試像[this](http://dev.enekoalonso.com/2008/12/29/modifying-the-url-hash-without-affecting-the-browser-history/)或[這個](http://stackoverflow.com/questions/11471008/location-hash-and-back-history)。就個人而言,我認爲在產品頁面上有「回到產品列表」之類的內容會很有意義。 – mellamokb

+0

@mellamokb''window.location.replace(window.location.href.split('#')[0] +'#'+ parameter_string)'是我正在尋找的。我想這個問題是重複的,雖然我在谷歌的時候並沒有遇到http://stackoverflow.com/a/11471401/802521。 – Clayton

+0

@mellamokb - 如果你添加你的評論作爲答案我接受它作爲這個問題的答案。 – Clayton

回答

0

嘛HTML現在我知道有這樣的事,作爲window.location.replace也許這不是最好的解決方案了,但它仍然是一個解決方案:

解決方案:停止在地址本身的顏色。只需在頁面上動態更改顏色即可。也許發送一個Ajax請求來保存服務器會話中最近的顏色,以防用戶刷新頁面。然後,在頁面刷新時,PHP頁面(或ASP或任何您使用的)將最近的顏色打印到您的JS變量中,並且將顯示相同的顏色,而不會改變地址並且沒有後退按鈕被破壞。

+0

感謝您的輸入,但我需要URL中的顏色。實際上還有一些其他變量(性別,方向等)也被插入到網址中。這允許用戶共享鏈接,並且該鏈接能夠準確再現「共享者」在其屏幕上看到的內容。 – Clayton

相關問題