当我不小心关闭浏览器时,`onbeforeunload`函数无法检测到;当我使用ajax时

时间:2018-08-22 08:29:30

标签: javascript onbeforeunload

我正在使用JavaScript函数窗口检测器onbeforeunload,但是当我单击浏览器的“关闭X”按钮时,它无法检测到事件。是我的代码有问题还是它的默认行为?

    $(window).on('unload onbeforeunload close', function (e) {
  e = e || window.event;

if (e) {

  if(localStorage.openpages==""||localStorage.openpages==null){
    var params = {
    isonline:0
  }
   $.ajax({
    async: false,
    type: "POST",
    url: '<?= base_url()?>UserProfile/setonlinestatus',
    data: params,
    contentType: "application/x-www-form-urlencoded",
    dataType: "json",
    timeout: 60000,
    success: function (response) {
        alert("")
    },
    error: function (jq, status, message) {
        var e = message;
    }
  });}
}});
//navigator.onLine it check whethe ri am online or not

1 个答案:

答案 0 :(得分:0)

(卸载和onbeforeunload)未完成ajax请求,浏览器关闭。我们需要通过navigator.sendBeacon()方法发送相同的请求,这用于通过HTTP将少量数据异步传输到Web服务器。