无需重新加载即可更改地址栏中的URL

时间:2013-03-29 20:04:14

标签: javascript

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

但他们都没有为我工作。

在网站上我有一个下拉菜单,并且在更改时,url参数应该已更改。

所以我要做的是:

我想将www.foo.com?country=Germany更改为www.foo.com?country=Slovenia而不重新加载。

我想要实现的目标是什么?

2 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

您要找的是HTML5提供的History API。它附带了history.pushState(...)history.popState(...)等功能,可让您动态更改网址,而无需完全分配新网址。

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