我想通过Javascript发送 [当用户尝试关闭选项卡时,发生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事件,如果...
就开箱即用navigator.sendBeacon
而言,您几乎是SOL,因为无法像您观察到的那样发送POST
和sendBeacon
(仅发送PUT
)。对于您的DELETE
,Chrome非常明确地说:“嘿,如果您使用POST
,我们曾经在XMLHttpRequest
中发送这些同步XHR请求,但我们不再支持它:“]
无法在页面关闭中对'XMLHttpRequest'[...]同步XHR执行'发送'。