// 创建一个状态对象
var stateObj = { foo: "bar" };
// 设定新的标题(大多数浏览器不支持,传空字符串)
var newTitle = "这是新页面的标题";
// 要浏览的新页面的URL(可选,不过好的实践是提供一个值)
var newUrl = "/new/index";
// 使用pushState方法添加新历史记录条目
history.pushState(stateObj, newTitle, newUrl);
// 监听popstate事件以处理浏览器的后退和前进操作
window.addEventListener("popstate", function(e) {
// 获取状态对象
var state = e.state;
// 状态对象可能为null或者undefined
if (state) {
a=false
// 状态对象中的foo应该是"bar"
alert(state); // 输出"bar"
}
});
pushstate和replacestate事件
pushstate事件可以将一个新的历史记录添加到浏览器历史记录中,并且不会立即跳转到新的页面。该方法接受三个参数,分别是状态对象(state object)、标题(title)和 URL(url)。例如:这个事件通常用于实现单页应用程序的导航。
例如: history.pushState({page: 1}, “Page 1”, “/page1”);
replacestate事件与pushstate事件类似,但是它会替换当前的历史记录,而不是添加一个新的记录。这个事件通常用于在不刷新页面的情况下修改URL。
例如: history.replaceState({page: 2}, “Page 2”, “/page2”);