(窗口:在卸载之前打开)= "onUnload ($ event)"不起作用



我有onbeforenload功能来检测浏览器窗口的关闭,但当我关闭它时,它不会执行确认功能。我正在使用角度2。

export class AppComponent implements OnInit {
constructor(private router: Router,
private _fireBase: AngularFireDatabase) {
}
ngOnInit() {
this.router.events.subscribe((evt) => {
if (!(evt instanceof NavigationEnd)) {
return;
}
window.scrollTo(0, 0);
});
}
onUnload(event) {
console.log('funciona', event);
confirm('desea salir');
}
}
<div  (window:onbeforeunload)="onUnload($event)">
<app-navbar></app-navbar>
<div class="main-body">
<div class="page-wrapper">
<router-outlet></router-outlet>
<app-login></app-login>
</div>
</div>
<app-footer></app-footer>
</div>

您可以通过以下方式完成:

@HostListener('window:beforeunload', ['$event'])
doSomething($event) {
$event.returnValue= true;
}

但请注意,根据MDN

为了对抗不需要的弹出窗口,一些浏览器不会显示在加载前事件处理程序中创建的提示,除非与页面进行了交互。此外,有些根本不显示它们。

在Chrome上,只有当开发者工具控制台打开(检查模式(时,才会显示弹出窗口。

最新更新