jquery - 在不重新加载页面的情况下更新浏览器的 URL

标签 jquery ajax html browser-history pushstate

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

我的理解是这是不可能的,这就是为什么像 twitter 和 facebook 这样的网站会在 ajax 调用上更新哈希标签。

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

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

(另外,我目前正在使用 Chrome,但是当我回过头来再次查看 IE9 时,我注意到 URL 没有更新。这可能是 Chrome 独有的吗?)

最佳答案

这在现代浏览器中可以通过使用 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)。

关于jquery - 在不重新加载页面的情况下更新浏览器的 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7077264/

相关文章:

javascript - 等待动画完成

javascript - 如何恢复 jQuery resizable 上的调整大小?

javascript - Internet Explorer prependTo 以不同方式显示

Javascript cookies 不创建

php - 如何直接在 URL 中拒绝用户访问脚本

javascript - 克隆数组?

jquery - Jquery Mobile 中的简单表单提交

javascript - 对数据库的 AJAX 请求 - 下载 .csv 文件

jquery - Ajax 无法在 IE11 中工作,错误代码 0x2f78

html - CSS/HTML float div 继承父级的宽度而不响应定义的宽度,怎么了?