angular - Angular 8 - 捕获窗口关闭
问题描述
我正在使用我的网络应用程序中打开一个外部页面,window.open
并添加了一个addEventListner
forunload
来捕获窗口关闭。在unload
事件块中,我想执行一些操作,然后重定向到另一个页面。我可以打开一个新选项卡,但是一旦打开选项卡,unload
块内的侦听器代码也会被触发。我只想在窗口关闭后触发该代码。
HTML:
<button type="button" (click)="goToUrl('https://mywebsite.com')">Click me!</button>
零件:
verifyWindow: any;
goToUrl(url: string): void {
this.loading = true;
this.verifyWindow = window.open(url, '_blank', 'height=500,width=400,left=100,top=100,resizable=yes,scrollbars=yes,toolbar=yes,menubar=no,location=no,directories=no, status=yes');
this.verifyWindow.addEventListener('unload', () => {
this.userInfoService.accountInfo = {
firstName: 'fname',
lastName: 'lname',
userName: 'uname',
email: this.userInfo.email
}
this.router.navigateByUrl('register')
});
}
解决方案
您正在寻找的解决方案可能是 beforeunload。看一下它,但据我了解,这将立即执行与“卸载”处理程序绑定的代码块。这应该可以工作,因为您已经在这段代码上方定义了 verifyWindow。
@HostListener('verifyWindow:beforeunload')
doSomething() {
this.userInfoService.accountInfo = {
firstName: 'fname',
lastName: 'lname',
userName: 'uname',
email: this.userInfo.email
}
this.router.navigateByUrl('register')
});
}
goToUrl(url: string): void { window.open()... }
这是一个使用 onbeforeunload 方法的 Angular 解决方案:在 Angular2 中有没有像 window.onbeforeunload 这样的生命周期钩子?
您可以在这里找到更多解释:https ://developer.mozilla.org/de/docs/Web/API/WindowEventHandlers/onbeforeunload
推荐阅读
- sql - 在 Oracle DB 中向上舍入到最近的月份
- javascript - Chai 断言似乎不适用于我的 JS 和 Webdriverio 框架/方法?
- r - 从 R 中的 Sharepoint 读取 Excel 文件
- json - 使用 pandas 识别 JSON 中的标题
- java - 并行运行 JUnit5 测试,但想让一些测试保持顺序
- python - Ansible raw ssh 模块可以像“expect”一样使用吗?
- symfony - 子文件夹中的 Symfony 4 控制器产生错误
- ssl - 从启用 SSL 的远程服务器连接到 cassandra cqlsh
- php - 如果在新类别中,则显示新徽章 Woocommerce
- powershell - Compare-Object PowerShell 输出一个 1KB 的文件,其中包含 2 个空行