2012-02-26 56 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個事件。我曾嘗試創建1個函數,但它在onLoad期間觸發了兩個事件。

下面是在加載頁面,甚至觸發onb​​eforeunload事件代碼:

<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'中進行ajax調用。 – djd 2012-02-26 02:56:56

回答

3

的問題是,您呼叫在第二組代碼的功能。你需要傳遞一個函數:

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

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

非常感謝。這很好。 – jaypabs 2012-02-26 01:52:24

0

試試這個:

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