javascript - 更改浏览器中的 URL 而不使用 JavaScript 加载新页面

标签 javascript url html5-history fragment-identifier hashchange

我怎么会有 JavaScript可能对当前页面产生一些影响但也会更改浏览器中的 URL 的操作,所以如果用户点击重新加载或书签,那么使用新的 URL?

如果后退按钮可以重新加载原始 URL,那就太好了。

我正在尝试在 URL 中记录 JavaScript 状态。

最佳答案

如果您希望它在尚不支持 history.pushStatehistory.popState 的浏览器中工作,“旧”方法是设置片段标识符,这不会导致页面重新加载。

基本思想是将 window.location.hash 属性设置为包含您需要的任何状态信息的值,然后使用 window.onhashchange event ,或者对于不支持 onhashchange 的旧浏览器(IE < 8,Firefox < 3.6),定期检查哈希是否已更改(例如使用 setInterval)并更新页面。您还需要检查页面加载时的哈希值以设置初始内容。

如果您使用 jQuery,则有 hashchange plugin这将使用浏览器支持的任何方法。我相信其他库也有插件。

需要注意的一点是与页面上的 id 冲突,因为浏览器会滚动到任何具有匹配 id 的元素。

关于javascript - 更改浏览器中的 URL 而不使用 JavaScript 加载新页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/136458/

相关文章:

dart - 如何使用History类处理浏览器历史记录

javascript - 如果有的话,什么时候应该使用 `jQuery` 而不是 `$` ?

javascript - 使用 immutable.js 合并两条不匹配的数据?

javascript - 避免在浏览器上显示从 Spring @ResponseBody 返回的数据

cocoa - CGPDF文档和本地数据

jquery - 移动到另一个网址

javascript - 如何在 map 返回中使用if?

javascript - jQuery 插件 .wrap() 和 .wrapAll() 错误

ruby-on-rails - Rails 4 中的 AJAX、HTML5 历史 API 和缓存

javascript - Jquery Ajax 调用 HTML5 历史记录和后退按钮