我有一个 angular 项目,我试图捕捉后退按钮事件,以触发我自己的功能。
我使用onpopstate
,来自window
( js )和platformLocation
( angular ),以及功能并不总是被触发。
我有一个重定向到我的页面的登录,我可以通过两种方式传递。
我也尝试使用window.onbeforeunload
,并且总是执行它,但是当我尝试重定向到另一个页面(我想做的事情)并阻止默认导航时,无法正常工作。
感谢您的帮助
修改
这是我服务中的主要代码。
服务代码
@Injectable()
export class BackService {
constructor(
private _platformLocation: PlatformLocation
) {
vm.setBackEvent();
}
/**
* NAvigation from browser
*/
setBackEvent() {
const vm = this;
// JS ** this trigger the function but dont navigate
// window.onbeforeunload = function (e) {
// console.log('onbbeforeunload');
// location.href = url;
// return ;
// };
// JS ** this doesnt work always
// window.onpopstate = (e) => {
// console.log('window onpopstate');
// location.href = url;
// }
// Angular ** his doesnt work always
this._platformLocation.onPopState = (e: LocationChangeListener) => {
console.log('PlatformLocation onpopstate');
location.href = url;
}
}
}
答案 0 :(得分:0)
我回应自己
我发现这个黑客总是触发popstate
功能。
window.onpopstate = function (e) {
// ... Some code ...
}
history.pushState({}, ''); // this makes the function always works
非常感谢