Событие onunload JS не всегда работает

Я хочу подсчитать, сколько времени посетители проводят на определенной странице, и сохранить это в моей базе данных MySQL.

Я подумал о том, чтобы просто запустить таймер в window.onload следующим образом:

window.onload= startCount;
window.onunload= sendCount;

var b=0;
var y;
function startCount() {
    document.getElementById('livecount').innerHTML=b;
    b=b+1;
    y=setTimeout("startCount()",1000);
}

и после того, как посетитель покидает страницу (window.onunload), я отправляю время через XMLHttpRequest в файл PHP, который сохранит его в моей БД:

function sendCount() {
    clearTimeout(y);    
if (window.XMLHttpRequest)
  {// code for IE7+, Firefox, Chrome, Opera, Safari
  xmlhttp=new XMLHttpRequest();
  }
else
  {// code for IE6, IE5
  xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
  }  
xmlhttp.open("GET","count.php?q="+b,true);
xmlhttp.send();
}

Проблема в том, что это не всегда работает. Я бы сказал, что он работает 3 раза из 10, когда я его пробую. Может быть, осталось недостаточно времени для полного выполнения PHP и SQL?

5
задан Crescent Fresh 29 November 2010 в 19:34
поделиться