如何在确认离开页面时调用函数?

时间:2012-02-10 18:27:20

标签: javascript jquery

  

可能重复:
  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。这应该发生在页面卸载...为什么?为什么会这样?

1 个答案:

答案 0 :(得分:0)

正如v.tsurka所说,this has been answered here

基本上,你把它放在窗口卸载对象上(它没有直接链接到你的beforeunload事件,但如果在beforeunload对话框中单击了“ok”则会触发。)

$(window).unload(...your function...)

它有很多限制(在您可能想要谷歌的参考文章和规范中讨论)。

正如this post中提到的,有很多事情你甚至都不能注意到(失去权力,互联网连接等)。您最好的选择可能是一个快速,简单的GET请求,其中包含一些URL parms来发送重要的注释。

此外,由于您谈论的是应用程序而不是网页,如果数据丢失是一个大问题,您可能会考虑与网站而不是网页产品同步的航空应用程序。