关于javascript:更改地址栏中的URL而无需重新加载

Change URL in address bar without having to reload

本问题已经有最佳答案,请猛点这里访问。

我发现了很多关于更改URL(不重新加载)的问题。一些答案是-使用插件,使用location.hash…,或者重新加载

但他们都没有为我工作。

在网站上,我有一个下拉菜单,在它的更改上,URL参数应该已经更改。

所以我想做的是:

我想换一个:www.foo.com?country=Germany换成www.foo.com?country=Slovenia,不用重新加载。

我试图达到的目标是否可能?


可以在较新的浏览器中使用;在较旧的浏览器中,只能更改哈希值。这似乎是一篇关于这个主题的好文章:http://html5doctor.com/history-api/


您要找的是HistoryAPI HTML5提供的。它具有像history.pushState(...)history.popState(...)这样的功能,允许您动态更改URL,而不必完全分配新的URL。

它被许多网站使用,包括Facebook本身,如果你打开一个聊天框,在页面之间导航,聊天框就不会重新加载。这意味着所有新内容都是通过Ajax获取的,但是URL不会改变,是吗?但确实如此。我认为他们是通过history.pushState(...)来实现的,在这里您只需将一个新的状态推到历史堆栈中,它只改变页面的某一部分。你会在这里找到一个很好的教程。