如果没有完成所有ajax并且用户离开窗口或页面

时间:2014-11-24 09:28:37

标签: javascript jquery ajax

我创建了一个在完成所有ajax后启动的脚本。我正在尝试修改脚本并添加if ajax is not done AND user left the windows then trigger function之类的条件。这可能吗?

var isDone=false;
$(document).ajaxStop(function() {
    if(isDone) {
        return; 
    } else {
        isDone=true;
        $.post("lib/ajax.html", { action: 'update_date', domain: domain });
    }
    //if(isDone == false && ) if ajax is not done and user leaves page 
    // exits then post to update date
});

4 个答案:

答案 0 :(得分:1)

要检查用户是否离开页面,请使用以下函数并在该检查中isDone标志:

$(window).unload(function(){
  if(!isDone) {
   <<execute function>>
  }
});

让我知道这是否有效。

答案 1 :(得分:1)

您可以使用$ .active来检查是否有任何ajax请求正在等待处理。然后使用

$(window).unload(function(){
 if ($.active > 0) {
       //Do something
    }
});

答案 2 :(得分:1)

我没有使用jQuery的unload-function(在1.8版本中不推荐使用),我建议在这里使用原生的javscript:

window.onbeforeunload = function(){
    if(!isDone) {
      //do something or if you want the user to confirm that he want to leave:
      return "You have attempted to leave this page. Are you sure?";
    }
}

<强> onbeforeunload

注意:此功能不属于任何标准,因此在不同的浏览器和版本中可能存在不同的行为。

答案 3 :(得分:0)

如果发布该信息很重要,我会让服务器脚本将其状态发布到update_date脚本。

即使用户关闭浏览器,服务器也可能会完成请求,这样您就不会依赖用户/浏览器。

能够关闭浏览器。如果你试图阻止他们,他们甚至可以杀死浏览器进程。