注销选项卡关闭但不刷新页面

时间:2016-04-13 14:13:41

标签: javascript html onbeforeunload

我知道这个问题可能已被问过太多次了,但我找不到符合我需求的解决方案,而且其他OP所描述的案例与我的略有不同。

  1. 我有单页应用程序,所以在应用程序导航中(点击锚点等)不是问题。

  2. 我需要在关闭浏览器的标签页或导航时注销用户:例如另一个域。

  3. 如果他只是刷新浏览器,不希望注销用户

  4. (注销是通过POST到api服务器的特定URL完成的,请求可以是同步的,也可以使用Beacon API - 这不是问题)。

    但问题是如何区分刷新与导航或关闭浏览器选项卡。

    • 我知道在onbeforeunload事件处理程序中,无法知道浏览器尝试导航到的新目标网址是什么。

    • 检测到用户点击F5 / Cmd + R / Ctrl + R是不够的,因为有人可能只是点击浏览器工具栏按钮进行刷新。或者选择从Safari中的“查看”菜单进行刷新,例如

    我考虑过记录到localStorage上一个beforeunload事件的时间戳,然后在页面加载时进行比较,并设置如果两个事件发生的时间少于2秒,例如然后它可能是一个刷新。但是又有人可能会篡改本地存储和私人模式Safari没有本地存储...

    解决方案可能涉及客户端更改和服务器更改。

    有什么想法吗?

0 个答案:

没有答案