javascript - Angular 捕获所有浏览器的后退按钮事件
问题描述
我正在使用 Angular 创建项目。在我的项目中,我需要处理浏览器后退按钮。要求是当用户单击后退按钮时,它应该被注销
登录网址不同,仪表板也不同。
下面是实现
// app.component.ts
@HostListener('window:popstate', ['$event'])
onBrowserBackBtnClose(event: Event) {
history.pushState('back', null, null);
// log out url
}
但是当用户刚刚登陆仪表板时,上面的代码不起作用
注意:只有当用户正在做一些活动时,如果用户没有做任何活动,则事件不会触发 [chrome]
解决方案
我不喜欢使用window:popstate
,因为感觉它不应该在 Angular 中使用。侦听 popstate 事件的更好方法是订阅位置服务:
import {Location} from "@angular/common";
constructor(private location: Location) { }
ngOnInit() {
this.location.subscribe(event => {
//do something
});
}
一大优点:您可以随时取消订阅。
请记住,window:popstate
它不会直接检测您是否来回。它仅在检测到路由参数已更改时触发,当用户点击第四个按钮时也会发生这种情况。
推荐阅读
- c# - 如何快速输入DataTable?或者将数据永久保存到 DataTable 中?
- haskell - 如何将 Megaparsec 与 Text.Read (派生的 Read 实例)结合使用
- java - 如何修复 HQL 查询中的“意外令牌”错误
- flutter - Flutter 中 SliverAppBar 和 SliverList 之间添加空格
- python - 自定义数字格式
- git - 如何在将旧 master 保留为分支的同时使分支成为新 master?
- java - Guice 将一个对象注入到类构造函数中
- android - Android Studio Vector 资产总是无法生成预览
- java - 如何使用 Hibernate 作为 Vert.x 的非阻塞 ORM
- ocaml - 在 utop 中使用完全限定名称