我有一个网页,可通过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没有在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。