我正在尝试在浏览器关闭之前发送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()?这样的解决方案还有哪些其他选择?
感谢您的帮助。
答案 0 :(得分:0)
我正面临着同样的问题,因为当用户离开或关闭页面导航时,Chrome现在禁止在页面关闭期间执行同步XHR。
https://www.chromestatus.com/feature/4664843055398912
我到处搜索,发现同步调用只是解决方案,但是如何解决?因为不推荐使用此类呼叫。