JavaScript通过History API实现无刷新导航,核心方法为pushState()、replaceState()及popstate事件,支持真实URL路径、SEO友好、可前进后退;需服务端配合返回统一入口,并手动处理页面更新。

JavaScript 通过 History API 操作浏览器历史记录,实现无刷新页面导航。核心是 pushState()、replaceState() 和 popstate 事件,不依赖 URL 哈希(#),支持真实路径、SEO 友好、可前进后退。
使用 pushState 添加新历史记录
在不刷新页面的前提下,向历史栈中添加一条新记录,并更新地址栏 URL(需同源):
-
history.pushState(state, title, url)——state是任意可序列化对象(如 {page: 'about'}),title当前多数浏览器忽略,url是相对或绝对路径(必须同源) - 示例:
history.pushState({page: 'product'}, '', '/product/123')会将地址栏变为/product/123,但不触发页面加载 - 注意:URL 不必真实存在,但需服务器配置支持(如所有前端路由都返回 index.html)
用 replaceState 替换当前历史记录
不新增记录,只修改当前条目的 state 和 URL,适合表单筛选、分页参数变更等场景:
-
history.replaceState({sort: 'price'}, '', '?sort=price')—— 地址栏变为?sort=price,后退时不会回到旧参数 - 常用于更新 URL 参数而不影响历史栈深度
监听 popstate 响应浏览器前进/后退
用户点击前进/后退按钮,或调用 history.back() 等时触发:
标签: vue react javascript java html 前端 nginx seo 浏览器 后端 栈 路由 win
还木有评论哦,快来抢沙发吧~