发送请求onunload

时间:2018-05-24 09:26:35

标签: jquery

我在这里已经阅读了关于这个主题的多个问题,但我仍然对它有一些疑问。

我首先尝试使用Navigator.sendBeacon()它完美地工作但我需要支持所有浏览器,因此无法使用。

我提出的解决方案是:

$(window).on('unload', function(){
            var xhr = new XMLHttpRequest();
            xhr.open('POST', "http://localhost:8080/express/check", false);
            xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
            xhr.send();
            xhr.abort();
        })

我尝试将链接更改为不存在的链接,并在执行此操作时断开互联网连接,并且在页面正常关闭后,它在Chrome,Firefox和Internet Explorer上正常工作。

我担心的是:这是否会在所有类型的浏览器上无缝地工作,或者是否存在潜在的问题(即页面在等待请求而不是关闭),即使在send()之后中止也是如此?

提前致谢

1 个答案:

答案 0 :(得分:0)

您可以尝试使用beforeunload之类的内容,它几乎兼容每个浏览器。见Browser compatibility。向下滚动到浏览器兼容性

$(window).on('beforeunload', function(){
    var xhr = new XMLHttpRequest();
    xhr.open('POST', "http://localhost:8080/express/check", false);
    xhr.setRequestHeader("Content-Type", "application/json;charset=UTF-8");
    xhr.send();
    xhr.abort();
 });