2

如何在用户关闭浏览器/选项卡之前激活功能?

下面是我的ajax请求

<script language="JavaScript" type="text/javascript">
 function srh_ajaxfunction_cny(id)
    {var xmlhttp;
    try{xmlhttp=new XMLHttpRequest();}
    catch (e){try{xmlhttp=new ActiveXObject("msxml2.xmlhttp");}
    catch (e){try{xmlhttp=new ActiveXObject("microsoft.xmlhttp");}
    catch (e){alert("Your browser does not support ajax!");      
    return false;}}}
    xmlhttp.onreadystatechange=function(){
    if(xmlhttp.readyState==4){
        alert('done')
    }}  

        xmlhttp.open("get",url_path,true);
        xmlhttp.send(null); 
    }
</script>
4

4 回答 4

9

使用beforeunload事件。通常,如果该处理程序中有异步操作,浏览器不会等待它们完成并继续页面卸载(有效地在它到达您的服务器之前中断您的 ajax 调用)。

有一些(hackish)技巧可以确保您的 ajax 在浏览器卸载页面之前通过。其中之一(例如用于跟踪您在网页上的行为的服务)正在执行循环,如下所示:

window.addEventListener('beforeunload', function() {
    // number of miliseconds to hold before unloading page
    var x = 200;
    var a = (new Date()).getTime() + x;

    // -----------
    // your ajax call goes here
    // -----------

    // browser will hold with unloading your page for X miliseconds, letting
    // your ajax call to finish
    while ((new Date()).getTime() < a) {}
}, false)
于 2013-03-25T12:09:02.940 回答
0

使用这个功能:

$(window).bind('beforeunload', function() {
    //do your stuffs
}); 
于 2013-03-25T12:07:02.040 回答
0

将其绑定到onbeforeunload事件

于 2013-03-25T12:07:27.340 回答
0

您可以将函数附加到window.onbeforeunload,但 chrome 不允许您执行任何其他代码。您只能返回某个字符串,该字符串将在用户离开之前显示。

于 2013-03-25T12:07:51.937 回答