JavaScript-在选项卡关闭时发送AJAX调用(删除请求)

问题描述 投票:2回答:1

我想通过Javascript发送DELETE请求当用户关闭选项卡时] >>。流程如下:

[当用户尝试关闭选项卡时,发生onbeforeunload事件,然后,如果用户确认离开页面,则发生onunload事件,并尝试执行deleteRequest功能,即[C0 ]请求。

synchronous ajax delete

不幸的是,似乎window.onbeforeunload = function(){ return 'Are you sure you want to leave?'; }; window.onunload = function(){ deleteRequest(); }; function deleteRequest(){ let url = new URL("http://......"); let request = new XMLHttpRequest(); request.onreadystatechange = function () { if(request.readyState == 4){ if(request.status === 200){ console.log('success'); } } } request.open("DELETE", url, false); try{ request.send(); } catch(e){ console.log(e); } } 不再支持此操作,因为当选项卡关闭时它将杀死所有未决的事件,并且在浏览器的控制台中,我可以看到以下消息

DOMException:无法在'XMLHttpRequest'上执行'send':无法加载'http:// .....':页面关闭时同步XHR。有关更多详细信息,请参见Google Chrome。 在deletRequest(....... js:411:17) 在window.onunload

[请注意,我之前在SO上已经看过很多关于此问题的主题,但是解决方案并没有真正帮助,因为大多数解决方案已经过时,因为chrome对此的政策最近已更改,例如https://www.chromestatus.com/feature/4664843055398912或[C0 ]。

似乎大多数人建议使用this来实现这一目标,但是在文档中,我仅看到了使用此方法发出this请求的方法,有什么想法吗?提前致谢。

我想在用户关闭标签页时通过Javascript发送AJAX DELETE请求。流程如下:当用户尝试关闭选项卡时,将发生onbeforeunload事件,如果...

javascript ajax google-chrome beacon window.onunload
1个回答
0
投票

就开箱即用navigator.sendBeacon而言,您几乎是SOL,因为无法像您观察到的那样发送POSTsendBeacon(仅发送PUT)。对于您的DELETE,Chrome非常明确地说:“嘿,如果您使用POST,我们曾经在XMLHttpRequest中发送这些同步XHR请求,但我们不再支持它:“]

无法在页面关闭中对'XMLHttpRequest'[...]同步XHR执行'发送'。

© www.soinside.com 2019 - 2024. All rights reserved.