可能重复:
How do I stop a page from unloading (navigating away) in JS?
我已经创建了一个在线白板。我希望用户确认是否要离开页面(因为他需要在离开之前保存白板)
$(window).bind('beforeunload', function(){
return 'Are you sure you want to leave?';
});
现在,如果用户确认离开页面,我需要调用一个函数。该函数将从jQuery(我知道该怎么做)发布到数据库&将用户从活动转换为非活动。
只有我遇到的麻烦是当用户确认离开时如何执行该功能。
谢谢!
...进一步
$(window).bind('beforeunload', function(){
return 'Are you sure you want to leave?';
});
window.onunload=pageleave();
function pageleave() {
var grp=$("#grpid").val();
var login=$("#loginid").val();
$.ajax({
type: 'POST',
url:'collwb_pageleave.php',
data: { GrpID:grp, LogID:login },
cache:false,
});
}
这里发生的是,在页面加载时,pageleave得到执行并在数据库中使Activity = 0。这应该发生在页面卸载...为什么?为什么会这样?
答案 0 :(得分:0)
正如v.tsurka所说,this has been answered here。
基本上,你把它放在窗口卸载对象上(它没有直接链接到你的beforeunload事件,但如果在beforeunload对话框中单击了“ok”则会触发。)
$(window).unload(...your function...)
它有很多限制(在您可能想要谷歌的参考文章和规范中讨论)。
正如this post中提到的,有很多事情你甚至都不能注意到(失去权力,互联网连接等)。您最好的选择可能是一个快速,简单的GET请求,其中包含一些URL parms来发送重要的注释。
此外,由于您谈论的是应用程序而不是网页,如果数据丢失是一个大问题,您可能会考虑与网站而不是网页产品同步的航空应用程序。