【问题标题】:Capture onClose event of browser in javascript - not onUnload在javascript中捕获浏览器的onClose事件 - 不是onUnload
【发布时间】:2014-09-04 14:06:40
【问题描述】:

我有一个系统,我需要知道浏览器何时在一个文件中关闭。该文件在一个会话中被创建和销毁多次。当浏览器关闭以及文件被销毁时,我可以在 window.onbeforeunload 事件中获得控制权。我需要知道浏览器何时关闭。当浏览器关闭时,我需要在服务器上触发注销事件,而不是每次文件被销毁时。我需要在同一个文件中知道这一点。我如何知道在同一事件中浏览器已关闭或文件已被销毁并且已触发卸载事件。我试过的是:

window.onbeforeunload = function(e) {
    var e = e || window.event;
    if (!(e.clientY > 0) || e.altKey) {
        //Logout event
    }
}

这会在每次触发 unload 事件时导致注销,而不仅仅是在调用浏览器时。

任何帮助将不胜感激。提前谢谢...

【问题讨论】:

  • 当用户关闭浏览器时,这不关你的事。没有“onClose”事件。自动注销只能通过服务器端超时来实现。
  • 是的。我面临的问题是服务器端超时为 60 分钟,如果用户尝试在该时间段内登录,系统将不允许登录,因为同一用户的并发会话已被禁用。如果您有什么建议,那将很有帮助。谢谢。

标签: javascript logout


【解决方案1】:

根据你上一条评论:

  • 您可以在客户端上设置一个唯一的持久 cookie。这个饼干是 每个客户端都是唯一的(不要使用 IP 地址)
  • 此 cookie 与当前运行的会话一起存储。

当用户关闭它的浏览器并重新打开它时,会话 cookie 就消失了。客户端 cookie 仍然有效,将被发送。

现在您可以检查用户是否从同一个客户端登录,方法是检查客户端 cookie 值是否与存储在延迟会话中的值相对应,您甚至可以再次“重新初始化”该会话。

如果用户试图打开另一个浏览器实例(IE 和 FF),这甚至会起作用,因为每个浏览器都有自己唯一的 cookie 值。

【讨论】:

  • 非常感谢.. 这帮助了...:) 再次感谢。
猜你喜欢
  • 2017-02-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-09-18
  • 2012-03-24
  • 1970-01-01
相关资源
最近更新 更多