Change URL in address bar without having to reload
我发现了很多关于更改URL(不重新加载)的问题。一些答案是-使用插件,使用location.hash…,或者重新加载
但他们都没有为我工作。
在网站上,我有一个下拉菜单,在它的更改上,URL参数应该已经更改。
所以我想做的是:
我想换一个:www.foo.com?country=Germany换成www.foo.com?country=Slovenia,不用重新加载。
我试图达到的目标是否可能?
- 要更改在URL地址栏中向用户显示的内容吗?为了什么目的?我无法想象基于安全性,浏览器会允许这样做。如果你能提供一个目的,也许我们可以提供一个替代方案。
- 我有一个国家列表(下拉列表),在它更改时,我想更改URL。有什么目的?六羟甲基三聚氰胺六甲醚。。。网站上的所有内容都会更改(不重新加载),因此我也要更改URL。
- 你看过这个答案吗?stackoverflow.com/questions/3338642/…
- 请参阅本演示:html5demos.com/history
可以在较新的浏览器中使用;在较旧的浏览器中,只能更改哈希值。这似乎是一篇关于这个主题的好文章:http://html5doctor.com/history-api/
您要找的是HistoryAPI HTML5提供的。它具有像history.pushState(...)和history.popState(...)这样的功能,允许您动态更改URL,而不必完全分配新的URL。
它被许多网站使用,包括Facebook本身,如果你打开一个聊天框,在页面之间导航,聊天框就不会重新加载。这意味着所有新内容都是通过Ajax获取的,但是URL不会改变,是吗?但确实如此。我认为他们是通过history.pushState(...)来实现的,在这里您只需将一个新的状态推到历史堆栈中,它只改变页面的某一部分。你会在这里找到一个很好的教程。