问题描述
当用户点击浏览器回退按钮,我想回退两个页面,当我在popState事件里用history.go(-2)方法时,浏览器会回退多次,不能正确往前回退两个页面。
问题出现的环境背景及自己尝试过哪些方法
Angular8项目在Chrome浏览器上,进行浏览器回退操作。
相关代码 粘贴代码文本(请勿用截图)
ngOnInit()?{
//?监听浏览器返回事件,回退页面到有权限页面
this.pushState();
this.location.onPopState((e) => {
//?防止Chrome浏览器初始化时进行路由跳转
this.goback(e);
});
}
goback(event)?{
if (history.state)?{
alert(kkk${window.location.href}
);
//?history.go(-1);
location.href = history.state.url;
}
event.preventDefault();
}
/**
*?往浏览器历史记录里添加一个自定义对象,
*?当触发浏览器前进/后退事件时,取自定义对象的路由进行跳转
*/
pushState()?{
//?获取浏览器历史记录里的路由
this.route.queryParams.subscribe((params) => {
console.log(params);
});
const state =?{
title: 'index',
url: ''
};
history.pushState(state, 'index', '');
}
你期待的结果是什么?实际看到的错误信息又是什么?
我期望当用户点击浏览器回退事件后,执行到history.go(-2)方法能正确往前回退两个页面,但是现在页面往前回退了多次,没有正确回退。
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…