2012-02-26 5 views
0

에 하나 개의 함수를 만드는 나는에 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); 
} 

합니다. 그러나, 나는 2 개의 사건을위한 2 개의 기능이있다. 나는 하나의 함수 만 만들려고했지만 onLoad 동안 두 이벤트를 발생시킨다.

<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); 
} 

+0

당신이 다른 브라우저에서이를 확인. 내가 정확히 기억한다면 모든 브라우저가'onbeforeunload'에서 아약스 호출을하도록 내버려 두진 않을 것이다. – djd

답변

3

문제는 당신이 코드의 두 번째 세트의 함수를 호출하는 것입니다 :

은 다음 페이지를 로딩에 심지어입니다 onbeforeunload 이벤트를 발생 코드입니다. 당신은 함수를 전달해야

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

window.onbeforeunload = function(){ 
    record_visit('obul'); //obul = onbeforeunload 
} 
+0

대단히 감사합니다. 그 위대한 작품. – jaypabs

0

이 시도 : 당신이 그것을 확인 작업이있을 때

window.onload = function(){ record_visit('ol'); } 
window.onbeforeunload = function(){ record_visit('obul'); }