javascript – window.onbeforeunload Chrome中的ajax请求

我有一个网页,通过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实现?我在做什么看起来完全合法的我。

谢谢,

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

我只能够让它工作,如果请求是同步的。我能够做到这一点与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。

http://stackoverflow.com/questions/4945932/window-onbeforeunload-ajax-request-in-chrome

本站文章除注明转载外,均为本站原创或编译
转载请明显位置注明出处:javascript – window.onbeforeunload Chrome中的ajax请求