小编典典

在Chrome中window.onbeforeunload ajax请求

javascript

我有一个网页,可通过Ajax处理机器的远程控制。当用户离开页面时,我想自动与机器断开连接。所以这是代码:

window.onbeforeunload = function () {
  bas_disconnect_only();
}

断开连接功能只是将HTTP GET请求发送到PHP服务器端脚本,该脚本完成了断开连接的实际工作:

function bas_disconnect_only () {
   var xhr = bas_send_request("req=10", function () {
   });
}

在FireFox中可以正常工作。但是使用Chrome,根本不会发送ajax请求。有一个不可接受的解决方法:向回调函数添加警报:

function bas_disconnect_only () {
   var xhr = bas_send_request("req=10", function () {
     alert("You're been automatically disconnected.");
   });
}

添加警报呼叫后,请求将成功发送。但是正如您所看到的,这根本不是一个解决方法。

有人可以告诉我Chrome是否可以实现吗?我正在做的事情对我来说完全合法。

谢谢,


阅读 696

收藏
2020-05-01

共1个答案

小编典典

我遇到了同样的问题,其中Chrome没有在window.unload事件中向服务器发送AJAX请求。

如果请求是同步的,我只能使其工作。我能够使用Jquery并将其 async 属性设置为 false

$(window).unload(function () {
   $.ajax({
     type: 'GET',
     async: false,
     url: 'SomeUrl.com?id=123'
   });
});

上面的代码适用于IE9,Chrome 19.0.1084.52 m和Firefox 12。

2020-05-01