Javascript 如何在onLoad和onBeforeUnload事件上创建一个函数

Javascript 如何在onLoad和onBeforeUnload事件上创建一个函数,javascript,onload,onbeforeunload,Javascript,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

我有以下代码来调用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);
}   

var startime=(新日期()).getTime();
window.onload=记录访问//超负荷
window.onbeforeunload=记录访问对象//obul=卸载前打开
功能记录(访问){
var x=(window.ActiveXObject)?新的ActiveXObject('Microsoft.XMLHTTP'):新的XMLHttpRequest();
x、 打开(“GET”、“count_visit.php?t=“+((new Date()).getTime()-startime)/1000+”&type=ol&url=“+escape(window.location.href),false);
x、 发送(空);
}
功能记录\u访问\u obul(){
var x=(window.ActiveXObject)?新的ActiveXObject('Microsoft.XMLHTTP'):新的XMLHttpRequest();
x、 打开(“GET”、“count_visit.php?t=“+((new Date()).getTime()-startime)/1000+”&type=obul&url=“+escape(window.location.href),false);
x、 发送(空);
}   

这很有效。但是,我有2个功能,用于2个事件。我尝试只创建一个函数,但它在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);
}

var startime=(新日期()).getTime();
window.onload=记录访问(“ol”)//超负荷
window.onbeforeunload=记录访问(“obul”)//obul=卸载前打开
功能记录\访问(值){
var x=(window.ActiveXObject)?新的ActiveXObject('Microsoft.XMLHTTP'):新的XMLHttpRequest();
x、 打开(“GET”、“count_visit.php?t=“+((new Date()).getTime()-startime)/1000)+“&type=“+value+”&url=“+escape(window.location.href)”,false);
x、 发送(空);
}

问题在于,您正在调用第二组代码中的函数。您需要传递一个函数:

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

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

问题是您正在调用第二组代码中的函数。您需要传递一个函数:

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

window.onbeforeunload = function(){
    record_visit('obul'); //obul = onbeforeunload
}
试试这个:

window.onload = function(){ record_visit('ol'); }
window.onbeforeunload = function(){ record_visit('obul'); }
试试这个:

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

当它工作时,请确保在不同的浏览器中检查它。如果我没记错的话:并不是所有浏览器都允许您在
onbeforeunload
中进行ajax调用。当它正常工作时,请确保在不同的浏览器之间进行检查。如果我没记错的话:并非所有浏览器都允许您在
onbeforeuload
中进行ajax调用。