9

是否可以在不让浏览器转到该页面的情况下更改浏览器地址栏中显示的 URL?例如,在通过 AJAX 调用更新页面内容之后?

我的理解是这是不可能的,这就是为什么 twitter 和 facebook 等网站在 ajax 调用上更新 hash-tag 的原因。

直到今天,当我继续访问http://8tracks.com/并开始使用右侧的过滤器...打开和关闭不同的流派时,我注意到即使它正在执行 ajax 调用刷新页面内容,URL也在动态更新。

有谁知道他们是怎么做到的?

(此外,我目前正在使用 Chrome,但是当我返回并使用 IE9 再次查看时,我注意到 URL 没有更新......这可能是 Chrome 唯一的东西吗?)

4

2 回答 2

21

通过使用 HTML5 History API,这在现代浏览器中是可能的:

history.pushState(null, null, '/some-path')

https://developer.mozilla.org/en/DOM/Manipulating_the_browser_history#The_pushState%28%29.c2.a0method

这适用于 Firefox、Chrome、Opera、Safari(不是 IE)。

于 2011-08-16T11:19:45.420 回答
0

你也可以使用 Jquery 历史插件。这也将支持 html4 浏览器。

这是一篇谈论它的文章:http: //veerasundaravel.wordpress.com/2011/12/02/change-browser-url-with-reloading-the-page-jquery-html5/

这是另一个提供更多选择的问题:jQuery History Plugin

于 2012-12-16T12:08:51.653 回答