我发现了很多关于更改网址的问题(没有重新加载)。
一些答案是 - 使用插件,使用location.hash
...,或重新加载
但他们都没有为我工作。
在网站上我有一个下拉菜单,并且在更改时,url参数应该已更改。
所以我要做的是:
我想将www.foo.com?country=Germany
更改为www.foo.com?country=Slovenia
而不重新加载。
我想要实现的目标是什么?
答案 0 :(得分:4)
您可以在较新的浏览器中使用;在旧版本中,您只能更改哈希值。这似乎是关于这个主题的好文章: http://html5doctor.com/history-api/
答案 1 :(得分:2)
您要找的是HTML5提供的History
API。它附带了history.pushState(...)
,history.popState(...)
等功能,可让您动态更改网址,而无需完全分配新网址。
许多网站都在使用它,包括我怀疑Facebook本身,如果你打开一个聊天框,并在页面之间导航,聊天框就不会重新加载。这意味着所有新内容都是通过Ajax获取的,但是URL不会改变,不是吗?但确实如此。我认为他们是通过history.pushState(...)
来完成的,你只需将一个新状态推入历史堆栈,它只会改变页面的某个部分。你会找到一本很好的教程here。