如何检测包含PHP应用程序的最后一个选项卡正在关闭
How to detect that the last tab containing my PHP app is closing?
我在我的PHP应用程序的菜单上有一个很好的Logout按钮,但是有些人不使用它,他们只是退出浏览器。
是否有任何方法,我可以检测到这个(我意识到它不会处理浏览器崩溃,但它比我现在有更好的&
这将是我的第一篇JS。
- 我认为我可以很容易地写一个页面关闭处理程序?或者我应该使用onbeforeunload()?
- 在它,也许我可以走所有的浏览器窗口和他们的标签(相同或不同的每个浏览器?(IE, FF等))
- 我可以得到每个选项卡的URL,并检查它是否正在运行我的应用程序(或者有更好的方法来做到这一点)?
- 如果这是最后一个标签,要么加载一个新的年龄,这是我的应用程序的注销页面,然后关闭它(等待它完全打开?或者只是发送一个HTTP请求并等待200 OK),或者使用Ajax?
请不要使用基于计时器的解决方案。我已经设置了一个,但是单个用户将超时设置为999999分钟,同时用户的数量设置为1,然后关闭浏览器&把自己锁在门外
更新似乎这里知道的人说这不能在JS中完成,谷歌建议我在DOM中不支持。
但是,另一种方式呢?从侧面思考,伙计们。当用户从我的应用中打开一个新标签页时,我能推送一个cookie吗?然后当用户想要关闭标签页时删除cookie ?并检查我是否正在删除最后一个cookie &通知服务器将此视为注销?
如果不是cookie,还有其他方法吗?(使用Ajax打开页面&关闭,服务器可以判断最后一个选项卡是否已关闭
如果在最后'x'秒/分钟内没有请求,则在服务器端暂停会话。
通过JS做这个可以像发送一个周期性的"心跳"请求回服务器一样简单,每5秒一次,当选项卡关闭时停止。然后,如果您的注销超时时间为5分钟,那么如果它在5分钟内没有心跳,那么您可以尽可能地确信客户端已经离开。
这是有用的,例如,如果你的页面有大量的内容(比如一篇很长的文章),用户在几分钟或几小时内不会发出任何请求,但不关闭标签,因此,你希望他们保持一个活跃的会话。
- 您可以添加一些代码,在
onbeforeunload
中关闭页面时执行。但是,如果时间太长,浏览器可能会中止你的代码。 - 不,你不能遍历选项卡;这是一个安全漏洞。
- 没有;因为你不能遍历选项卡,你也不能得到它们的url。
- 你无法检测到它是否是你的页面打开的最后一个标签,但如果你可以,浏览器可能会阻止打开一个窗口关闭一个标签。但是,同步AJAX请求可以工作。
没有明确的方法来做你所要求的,事实上这之前已经问过了:
javascript检测浏览器关闭选项卡/关闭浏览器
使用会话超时,如第一个注释所建议的。
相关文章:
- 无法在Ionic select中预先选择最后一个选项
- 如何记住提交/刷新后使用的最后一个选项卡
- Ajax下拉/最后一个选项更改Iframe
- 带有链接的jquery选项卡会记住最后一个活动项
- AngularJS:仅在最后一个选项卡上显示过滤的内容
- 从iPhone的多选框中取消选择最后一个选项
- 在重新加载代码段上设置 Bootstrap 当前选项卡,而不是在本地存储中存储最后一个选项卡
- 我想在下拉列表的最后一个选项被选中时提交表单.选项是动态生成的
- 选择不适用于动态创建的选择图元.总是选择最后一个选项
- "重新打开最后一个关闭的选项卡“;导致显示最后一个ajax请求内容
- 使用jQuery取消选择多选中的最后一个选项
- ng选项的最后一个元素
- 如何将下拉列表中的最后一个选项设置为使用D3.js选择
- 在angular中使用ng-repeat将selected应用到最后一个选项
- JavaScript显示最后一个选项卡
- 如何检测包含PHP应用程序的最后一个选项卡正在关闭
- 当最后一个选项卡关闭时显示弹出框
- 如何在最后一个选项卡中显示页面的填充表单值
- 如何让浏览器记住通过ajax和jquery生成的多选项卡分页内容中显示的最后一个页面
- 正在获取下拉列表的最后一个选项