【发布时间】:2019-07-03 19:10:11
【问题描述】:
我试图在浏览器关闭之前发送一个 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() ?对于这样的解决方案,还有哪些其他选择?
感谢任何帮助。
【问题讨论】:
-
这听起来很邪恶....
-
navigator.sendBeacon()是一般 javascript 的答案,忽略 Angular 或任何其他框架
标签: angular typescript http xmlhttprequest