简体   繁体   English

当用户在 Angular 9 中关闭浏览器/选项卡时如何执行功能?

[英]How to execute functions when user closes browser/tab in Angular 9?

I've tried researching this to death but I'm struggling finding a solution that works.我已经尝试过对此进行研究,但我正在努力寻找可行的解决方案。 I need two methods from two different services to execute on browser/tab close.我需要来自两个不同服务的两种方法来在浏览器/选项卡关闭时执行。

I've tried fetch API, which worked great for chrome but couldn't get it to work for IE.我试过获取 API,它对 chrome 非常有用,但无法在 IE 中使用。 I've tried a while loop like the following:我尝试了如下的while循环:

@HostListener('window:beforeunload', ['$event'])
onBeforeUnload(): void {
    var sessionEnded = false;
this.userSessionService.EndSession(this.userSessionId).then(res => sessionEnded = res);;
while (sessionEnded == false) {
  console.log('session not ended');
}
  }

That worked great for chrome but I couldn't close the IE browser.这对 chrome 非常有用,但我无法关闭 IE 浏览器。

Is there anything else out there that I've missed?还有什么我错过的吗?

Is there possibly a way that a new tab opens to execute the functions then closes on completion?是否有可能打开一个新选项卡以执行功能然后在完成时关闭?

@HostListener('window:beforeunload', ['$event'])
async onBeforeUnload(): void {
    var sessionEnded = false;
    await sessionEnded = this.userSessionService.EndSession(this.userSessionId);
    while (sessionEnded == false) {
      console.log('session not ended');
    }
  }

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM