我创建了一个在完成所有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
});
答案 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脚本。
即使用户关闭浏览器,服务器也可能会完成请求,这样您就不会依赖用户/浏览器。
人将能够关闭浏览器。如果你试图阻止他们,他们甚至可以杀死浏览器进程。