Javascript `onbeforeunload`函数在我意外关闭浏览器时未检测到;当我使用ajax时

Javascript `onbeforeunload`函数在我意外关闭浏览器时未检测到;当我使用ajax时,javascript,onbeforeunload,Javascript,Onbeforeunload,我正在使用javascript函数window detectoronbeforeunload,但当我单击浏览器的“close X”按钮时,它不会检测到事件。这是我的代码中的问题还是它的默认行为 $(window).on('unload onbeforeunload close', function (e) { e = e || window.event; if (e) { if(localStorage.openpages==""||localStorage.openpage

我正在使用javascript函数window detector
onbeforeunload
,但当我单击浏览器的“close 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
$(窗口).on('unload onbeforeunload close',函数(e){
e=e | | window.event;
如果(e){
if(localStorage.openpages==“”| | localStorage.openpages==null){
变量参数={
等值线:0
}
$.ajax({
async:false,
类型:“POST”,
url:'UserProfile/setonlinestatus',
数据:params,
contentType:“application/x-www-form-urlencoded”,
数据类型:“json”,
超时:60000,
成功:功能(响应){
警报(“”)
},
错误:功能(jq、状态、消息){
var e=消息;
}
});}
}});
//navigator.onLine检查ri是否在线

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

请查看:-它应该可以帮助您解决问题检测关闭浏览器是出了名的困难。例如,如果浏览器崩溃,您将无法获取它们。您可以使用一种保持活动的机制,它可以随时向您发送消息。然后,您将大致了解用户在线的时间。如果他们在几分钟内没有更新,他们就离线了。当我一个接一个地关闭选项卡时,它工作正常one@eithed他确实有async=false上次我不得不处理在页面关闭时发送数据的问题时,我实际上不得不使用async:true来处理,但我认为现在已经改变了。我链接的答案使用了
navigator.sendBeacon()。