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

Javascript 如何在用户关闭浏览器/选项卡之前激活功能?,javascript,ajax,jquery,Javascript,Ajax,Jquery,如何在用户关闭浏览器/选项卡之前激活功能 下面是我的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");}

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

下面是我的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>

功能srh\U ajaxfunction\U cny(id)
{var xmlhttp;
请尝试{xmlhttp=newxmlhttprequest();}
catch(e){try{xmlhttp=newactivexobject(“msxml2.xmlhttp”);}
catch(e){try{xmlhttp=newActivexObject(“microsoft.xmlhttp”);}
catch(e){alert(“您的浏览器不支持ajax!”);
返回false;}}}
xmlhttp.onreadystatechange=函数(){
if(xmlhttp.readyState==4){
警报(“完成”)
}}  
open(“get”,url\u path,true);
xmlhttp.send(空);
}
使用此功能:

$(window).bind('beforeunload', function() {
    //do your stuffs
}); 

将其绑定到
onbeforeunload
事件

您可以将函数附加到
窗口。onbeforeunload
,但chrome不允许您执行任何其他代码。您只能返回在用户离开前显示的特定字符串。

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

在浏览器卸载页面之前,有一些(黑客)技巧可以确保您的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)
window.addEventListener('beforeunload',function(){
//卸载页面前要保持的毫秒数
var x=200;
变量a=(新日期()).getTime()+x;
// -----------
//你的ajax调用在这里
// -----------
//浏览器将在卸载页面时保持X毫秒,让
//您的ajax调用完成了吗
while((new Date()).getTime()
我只需要在浏览器关闭时使用ajax。当我刷新页面时,上面的代码在浏览器的超链接、后退和前进按钮中起作用。由于用户导航(单击链接)到不同的页面,您无法区分浏览器何时关闭自己和何时卸载页面。从网站的角度来看,这是一样的。我之所以尝试使用它,是为了找到在线和离线的用户。您还有其他解决方案吗?当然,有很多方法可以做到这一点,大多数方法都涉及在服务器端保存用户在线或离线时的信息,以及(可能)一些javascript来发送给定用户仍然在线的服务器信息。谷歌它,一个答案,你可能会发现有用的作品,如预期的。谢谢,我只需要在浏览器关闭时使用ajax。当我刷新页面时,上面的代码工作,在浏览器的超链接中,后退和前进按钮,我只需要在浏览器关闭时使用ajax。当我在浏览器的超链接、后退和前进按钮中刷新页面时,上面的代码可以正常工作