Я бы пошел с onbeforeunload
вместо unload
, чтобы дать вам максимальное время. Однако, если вы планируете сделать запрос обратно на сервер в это время (или сделать что-то асинхронное), вы можете оказаться в состоянии гонки, когда иногда запрос проходит, а иногда нет.
Это происходит потому, что страница перестает обрабатывать ваш запрос (или другое асинхронное действие), когда она выгружается. Это может быть практически сразу в современных браузерах и довольно быстро в старых IE. Из-за этого очень редко имеет смысл делать что-либо в любом из событий unload
или beforeunload
.
Если вы пытаетесь передать информацию о таймере на следующий URL, вы можете просто изменить URL при нажатии на них.
$('a').click(function(){ this.href=this.href + "#timer=" + timerVar; });
Затем, когда вы перейдете на следующую страницу, вы можете прочитать это последнее значение из URL.
Google Analytics решает эту проблему, добавляя задержку ко всем ссылкам:
$('a').click(function(){
var that = this;
setTimeout(function(){
window.location=that.href;
},100);
return false;
});
Это просто дает вашей странице дополнительное время для перехода по ссылкам. Это не надежно, но это не имеет значения для Google, так как аналитика несколько преходящая (и они также используют параметры URL для других более важных вопросов (например, кампаний)).