为什么Chrmoe浏览器的onPopState事件里执行history.go(-2)会回退多次?

新手上路,请多包涵

问题描述

当用户点击浏览器回退按钮,我想回退两个页面,当我在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)方法能正确往前回退两个页面,但是现在页面往前回退了多次,没有正确回退。

阅读 1.3k
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题