【问题标题】:Logout user when browser close浏览器关闭时注销用户
【发布时间】:2020-10-23 05:22:27
【问题描述】:

我想在用户关闭浏览器而不是选项卡时注销用户。

我知道来自 JS 的 'beforeunload' 事件侦听器,但在关闭选项卡时也会调用它。

我有一个名为 logout() 的 JS 函数。当用户关闭浏览器时我怎么能调用它?

【问题讨论】:

  • 您的应用程序使用什么类型的身份验证?
  • 我正在使用 Gluu。
  • 我是网络开发的新手。但我想最好的方法是让服务器不断 ping 客户端。
  • 我也想过,但是如果每个客户端每分钟都在ping客户端会浪费带宽
  • 这能回答你的问题吗? Detect browser or tab closing

标签: javascript asp.net


【解决方案1】:

您可以比较关闭事件的时间戳。浏览器需要更多时间来关闭所有选项卡,因此会有一点延迟。

//Unload Events
$(window).on('unload',function(e) {
  e = e || window.event;

  var timestamp = localStorage.getItem('timestamp')
  if(timestamp !=null && timestamp !=undefined){
    var TimeNow = new Date().getTime(), Difference  = TimeNow - timestamp ;

    if(Difference<20){
      //Browser Closed
      console.log('Browser Closed')
      localStorage.removeItem('timestamp');
 
      //Your logout function
      logout();
    }else{
      //Tab Closed
      console.log('Browser Tab Closed');
      localStorage.setItem('timestamp',new Date().getTime());
    }

  }else{
    //Other Event
    localStorage.setItem('timestamp',new Date().getTime());
  }
});

此检测没有其他解决方案。

【讨论】:

  • 我试了一下,对我来说它可以在 Google Chrome 浏览器上运行。您无法在此事件中发出警报或其他内容
猜你喜欢
  • 1970-01-01
  • 2017-12-28
  • 2015-08-22
  • 2017-01-19
  • 2017-01-05
  • 2012-04-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多