Javascript:如何在不刷新页面的情况下更改地址栏中的URL?

Leo*_*ang 7 javascript ajax web-applications

可能重复:
如何使用JavaScript在不加载新页面的情况下更改浏览器中的URL?

我注意到像GMail和GrooveShark这样的网络应用程序可以更改浏览器地址栏中的URL而无需刷新页面.Ajax显然用于更改内容.如何更改网址?

top*_*pek 10

Gmail和Grooveshark只更改哈希,这可以通过更改:

location.hash = 'blah'
Run Code Online (Sandbox Code Playgroud)

如果你的目标是支持HTML5的浏览器,你可以使用window.history.pushState和window.history.popState,参见http://spoiledmilk.dk/blog/html5-changing-the-browser-url-without-refreshing-page


Nic*_*ark 5

您可能想要查看HTML5推送状态.我知道iQuery Mobile正在使用此功能修改位置URL而不会触发页面加载,它可能是适合您的解决方案.

https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history

以下是它的工作原理示例:

window.history.pushState(data, "Title", "/new-url");
Run Code Online (Sandbox Code Playgroud)