我正在尝试使用函数window.addEventListener('beforeunload', function (event) {...}
在函数中,我想知道哪个动作触发了监听器。
我试图使用这种方法没有成功:
window.addEventListener('beforeunload', function (event) {
if (performance.navigation.type == 1) {
document.write('Window was refreshed!');
}
else {
document.write('Window was closed!');
}
});
任何操作(刷新/关闭/'返回')都会触发else
部分......我做错了什么?
也可以选择替代方法。
答案 0 :(得分:1)
好吧,由于else
的工作方式,你总是触发peformance.navigation
处理程序。
即使您在beforeunload
处理程序中编写它,它仍会在当前文档上运行,而不是您正在加载的文档,因此它将输出包含信息的PerformanceNavigation
对象如何打开当前页面,而不是您要导航到的页面。
至于你的问题中有关检测用户离开页面的方法的部分,我认为此刻不可能,不是没有使用“脏”黑客/解决方法(检测用户点击了哪个按钮,检测键盘事件等。)
答案 1 :(得分:0)
使用router events您可以在app.component中订阅
ngOnInit() {
this.router.events
.subscribe((event) => {
// example: NavigationStart, RoutesRecognized, NavigationEnd
console.log(event);
});
}