JavaScript history API 通过 pushState 和 replaceState 操作浏览器历史栈而不刷新页面,配合 popstate 事件响应前进后退,实现 SPA 路由与状态管理;需注意同源限制、用户交互调用要求及服务端 fallback 配置。

JavaScript 的 history API 允许你在不刷新页面的前提下操作浏览器的历史记录,是实现单页应用(SPA)路由、前进后退控制和状态管理的关键工具。核心在于它不跳转 URL,而是改变地址栏并维护历史栈,同时可关联任意状态数据。
pushState:添加新历史记录项
向历史栈中插入一条新记录,用户点击“后退”会回到上一项,但不会触发页面刷新。
- 语法:
history.pushState(state, title, url) -
state:任意可序列化的 JS 对象(如
{page: 'detail', id: 123}),会在popstate事件中被读取 -
title:目前大多数浏览器忽略该参数,传空字符串
''即可 - url:相对或绝对路径,必须同源;仅改变地址栏显示,不发起请求
例如:history.pushState({tab: 'settings'}, '', '/settings') 会让地址栏变成 /settings,且可在后退时恢复该状态。
replaceState:替换当前历史记录项
用新状态和 URL 替换当前历史栈顶项,不新增条目,适合更新当前页状态而不留下冗余记录。
立即学习“Java免费学习笔记(深入)”;
标签: javascript java html js 前端 go 浏览器 工具 栈 ai 路由 win 表单提交
还木有评论哦,快来抢沙发吧~