2012-02-26 91 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'); }