beforeunload 事件中的同步 ajax 请求替代支持 Edge chromium
Synchronous ajax request in beforeunload event alternative to support Edge chromium
我必须在 beforeunload 事件中发出一个同步 ajax 请求,但它抛出一个错误,因为在页面卸载事件期间,chromium 浏览器不支持同步 ajax 请求。
在页面卸载事件周期中发出同步 ajax 请求的替代方法是什么。
window.on('beforeunload',function(){
$.ajax({
url:'@Url.Action("ActionName","ControllerName")',
async:false,
data:formData,
success:function(){
//Success logic
},
error:function(){
//Failure logic
}
});
});
DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load:
Note: navigator.sendBeacon() is asynchronous by default, but i need to have a synchronous request in page dismissal.
有什么建议吗?
同步XMLHttpRequest
已经弃用,可以参考this doc。 Blink 已从页面关闭事件(beforeunload
和 unload
)中删除了对同步 XHR 的支持,您再也不能在 chromium 浏览器中这样做了。
现代方法是使用 sendBeacon
和 fetch keepalive
作为解决方法。更多信息可以参考this tweet and 。如果您不使用这些解决方法,我认为没有其他办法。
我必须在 beforeunload 事件中发出一个同步 ajax 请求,但它抛出一个错误,因为在页面卸载事件期间,chromium 浏览器不支持同步 ajax 请求。
在页面卸载事件周期中发出同步 ajax 请求的替代方法是什么。
window.on('beforeunload',function(){
$.ajax({
url:'@Url.Action("ActionName","ControllerName")',
async:false,
data:formData,
success:function(){
//Success logic
},
error:function(){
//Failure logic
}
});
});
DOMException: Failed to execute 'send' on 'XMLHttpRequest': Failed to load:
Note: navigator.sendBeacon() is asynchronous by default, but i need to have a synchronous request in page dismissal.
有什么建议吗?
同步XMLHttpRequest
已经弃用,可以参考this doc。 Blink 已从页面关闭事件(beforeunload
和 unload
)中删除了对同步 XHR 的支持,您再也不能在 chromium 浏览器中这样做了。
现代方法是使用 sendBeacon
和 fetch keepalive
作为解决方法。更多信息可以参考this tweet and