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

标签 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");}
    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>

最佳答案

使用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)

关于javascript - 如何在用户关闭浏览器/选项卡之前激活功能?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15614491/

相关文章:

php - JavaScript 返回 "is not a function"错误,但该方法在 Firebug 的响应中列出

javascript - fullcalendar 动态添加事件

javascript - 使用 javascript 在按钮单击时打印多个 HTML(动态)

php - UL 内 php 页面上的 onMouseOver 图像交换

javascript - 仅从 JSON 数据中选择特定值

javascript - 使用javascript在循环中动态创建数组

Javascript 不适用于 ajax 生成的代码?

javascript - 使用ajax/javascript显示多个json数组

javascript - 将 JavaScript 变量发送到 PHP,在 SQL 语句中使用该变量,然后显示 PHP 结果

javascript - 尝试创建交易时,在 hyperledger Composer 中出现错误 : Expected a Resource or Concept.