Как создать одну функцию для событий onLoad и onBeforeUnload

У меня есть следующий код для вызова событий onLoad и onBeforeUnload:

<script type="text/javascript">
var startime = (new Date()).getTime();
window.onload = record_visit_ol; //ol - onload
window.onbeforeunload = record_visit_obul; //obul = onbeforeunload

function record_visit_ol() {
    var x = (window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
    x.open("GET", "count_visit.php?t=" + (((new Date()).getTime() - startime) / 1000)+"&type=ol&url="+escape(window.location.href), false);
    x.send(null);
}

function record_visit_obul() {
    var x = (window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
    x.open("GET", "count_visit.php?t=" + (((new Date()).getTime() - startime) / 1000)+"&type=obul&url="+escape(window.location.href), false);
    x.send(null);
}   

That works great. However, I have 2 function for 2 events. I have tried creating 1 function only but it fires both events during onLoad.

Вот код, который запускает даже событие onBeforeUnload при загрузке страницы:

<script type="text/javascript">
var startime = (new Date()).getTime();
window.onload = record_visit('ol'); //ol - onload
window.onbeforeunload = record_visit('obul'); //obul = onbeforeunload

function record_visit(value) {
    var x = (window.ActiveXObject) ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest();
    x.open("GET", "count_visit.php?t=" + (((new Date()).getTime() - startime) / 1000)+"&type="+value+"&url="+escape(window.location.href), false);
    x.send(null);
}


person jaypabs    schedule 26.02.2012    source источник
comment
Когда он у вас работает, убедитесь, что вы проверили его в разных браузерах. Если я правильно помню: не все браузеры позволяют выполнять вызовы ajax в onbeforeunload.   -  person djd    schedule 26.02.2012


Ответы (2)


Проблема в том, что вы вызываете функцию во втором наборе кода. Вам нужно передать функцию:

window.onload = function(){
    record_visit('ol'); //ol - onload
}

window.onbeforeunload = function(){
    record_visit('obul'); //obul = onbeforeunload
}
person James Montagne    schedule 26.02.2012

попробуй это:

window.onload = function(){ record_visit('ol'); }
window.onbeforeunload = function(){ record_visit('obul'); }
person Daan Timmer    schedule 26.02.2012