2011-04-05 58 views
4

有沒有一種方法來設置查詢字符串的值使用JavaScript?如何用Javascript設置查詢字符串

我的頁面有一個過濾器列表,單擊它時會改變右側的頁面內結果窗格。

我試圖更新到URL的querystring值,所以如果用戶離開頁面,然後單擊「返回」按鈕,他們將返回到最後一個篩選器選擇集。

例如:
降落:foo.html
點擊1:foo.html面=酒吧
單擊2:foo.html面=酒吧|巴茲
單擊3:???foo.html面= bar | baz | zap

這可能嗎?

+1

使用過濾器值cookie可能會更好地實現? – Dan 2011-04-05 01:37:13

+0

你可以看看[Backbone](http://backbonejs.org/),尤其是[Backbone.Router class](http://backbonejs.org/#Router)。 – acme 2012-04-12 07:46:14

回答

5

您可以使用Javascript更改哈希(URL的#哈希部分),但更改查詢字符串意味着您必須重新加載頁面。所以,不,你想要做的是不可能的。

另一種方法是使用Javascript更改散列,然後在頁面加載時檢查散列以動態更改結果。您正在尋找類似jQuery Address的東西。

6

這是可能的,但它會刷新頁面。

document.location = "?facets=bar"; 

如果您不關心瀏覽器支持,則可以使用HTML5 history.pushState

+0

順便說一句,現在在2016年,[幾乎所有瀏覽器](http://caniuse.com/#feat=history)都支持'history.pushState'。 – Garrett 2016-08-18 03:35:10

+0

如果您不想創建新的歷史記錄條目,請使用'history.replaceState'而不是'history.pushState'。 (更多[這裏](http://stackoverflow.com/questions/17507091/replacestate-vs-pushstate)) – Garrett 2016-08-18 03:36:28