PHP JavaScript?当用户关闭页面或浏览器时执行什么操作?

3
3个回答

3
唯一能在页面关闭或导航离开时执行某些操作的方法是将事件处理程序附加到unload事件上,就像Rocket所建议的那样。然而,您不能依赖此事件来触发,因为很多事情可能会阻止它。浏览器可能会停止它以便将其资源集中在其他任务上,用户可能会失去连接,浏览器可能会被终止等。
最可靠的跟踪用户和会话的方法是让他们定期发送keepAlive消息到服务器。然后,您就会知道用户在给定时间戳和keepAlive消息的间隔之间离开了。
在服务器上,您可以遍历长时间未保持活动状态的会话并执行所需的任何操作。
然而,如果您只需要创建一些炫酷的“注销”效果,这种方法是不必要的。

0
您可以使用window.onunload来在用户离开页面/关闭标签页时触发AJAX调用。
window.onunload = function(){
  // AJAX call to mark user "offline"
}

编辑:我建议在单击链接时设置一个变量,以便仅在用户离开页面时运行。

使用jQuery,可以这样做:

$('a').click(function(){ // Run for all links
  $('body').data('linkClicked', true); // Set global variable
});

$(window).unload(function(){ // jQuery version of window.onunload
   if(!$('body').data('linkClicked')){ // Check global variable
      $.ajax({
        url: 'url',
        data: {some: data},
        async: false // this locks the browser, but it may be needed to make
                     // sure the ajax call runs before the tab is closed
      });
   }
});

没错,这个可以工作,但是要注意Sami,我认为这也会在页面更改时触发。所以如果用户点击您网站上的另一个部分的链接,这也会被触发。 - Henesnarfel
这不是在每次页面更改后都会触发吗? - SDZ
是的,我也这么认为。使用jQuery该如何实现呢,因为我对它一无所知。 - SDZ
@SamiDzHamida:是的,我想是这样的。当链接被点击时,您可以设置一个全局变量(并在此函数中检查该变量),以便它仅在页面关闭时运行。 - gen_Eric
@SamiDzHamida:看一下我的修改。 - gen_Eric
好的,谢谢。等我有时间了,我会尝试使用你的帖子。 感谢你的帮助。 - SDZ

0
我会使用jQuery来执行这个任务..类似于这样,并使用上面提到的window.onunload:
$.ajax({
  type: 'POST',
  url: url,
  data: data,
  success: success,
  dataType: dataType
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接