My Javascript needs to send some data to a server when the page closes, which I currently do with a synchronous AJAX (SJAX?) request in window.onbeforeunload
. The problem with this, of course, is that if my server takes too long or the network connection dies, the browser freezes.
From what I ve read, it s not possible to specify a timeout for synchronous AJAX requests, and asynchronous AJAX requests don t work on window.onbeforeunload
. My best guess at how to solve this would be to use an asynchronous request, and then lock up the browser for some time to let the request finish:
window.onbeforeunload = function() {
doSomeAjax(); // asynchronous request
var now = new Date();
var time_limit = now.getTime()+2000; // 2,000 ms
while(now.getTime() < time_limit) {
now = new Date();
}
}
Would this work? Are there any potential issues with this method?