Angular 7-如何在浏览器关闭之前发送HTTP调用

时间:2019-07-03 19:10:11

标签: angular typescript http xmlhttprequest

我正在尝试在浏览器关闭之前发送POST HTTP请求。

基本上,我试图向用户表明他们已经关闭了该页面,但是在关闭之前,调用并未从应用程序中退出。

我的印象是,对于普通的HTTP请求,这是不可能的,因为您必须订阅HTTP请求。

我尝试了以下找到的解决方案:Angular 2 - Execute code when closing window

这对我不起作用,因为我没有执行简单的GET。这是到目前为止我得到的。

component.ts

@HostListener('window:beforeunload', ['$event'])
  beforeunloadHandler($event) {
    this.eventsService.sendEvent(this.form.value).subscribe(() => {
      console.log("Made it");
    });
  }

service.ts

sendEvent(userData): Observable<any> {
    return this.http.post<any>(this.url, userData,
      {
        headers: new HttpHeaders({
          "Content-Type": "application/json"
        })
      })
  }

有没有办法像上述解决方案那样利用XMLHttpRequest()?这样的解决方案还有哪些其他选择?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我正面临着同样的问题,因为当用户离开或关闭页面导航时,Chrome现在禁止在页面关闭期间执行同步XHR。

https://www.chromestatus.com/feature/4664843055398912

我到处搜索,发现同步调用只是解决方案,但是如何解决?因为不推荐使用此类呼叫。