Welcome toVigges Developer Community-Open, Learning,Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
346 views
in Technique[技术] by (71.8m points)

为什么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)方法能正确往前回退两个页面,但是现在页面往前回退了多次,没有正确回退。


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Answer

0 votes
by (71.8m points)
等待大神解答

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome to Vigges Developer Community for programmer and developer-Open, Learning and Share
...