javascript - 在 Google Chrome 中使用 javascript 关闭当前选项卡
问题描述
对于我的 Web 应用程序,我一次只需要保留一个页面实例。如果在新选项卡中打开新实例,我需要关闭前一个。我看过很多与此相关的帖子,他们都说我只能关闭 Chrome 中以编程方式打开并由自身创建的选项卡,但不能关闭当前选项卡。我知道这是一种安全威胁,但这是客户的要求。客户端浏览器设置是可控的,我可以根据需要进行任何设置。所以,我正在寻找一种方法来绕过这个安全策略。
解决方案
您只能关闭您打开的页面。但您可以关闭另一个选项卡。
但是你仍然可以实现你想要的。与您的服务器通信,并通过检查存储在其页面中的令牌来检查同一个客户端是否打开了两个选项卡。如果是,请关闭其中一个(只能关闭自己),如果由于某些安全原因未能自行关闭,则只需将整个页面变为白色。
- 页面加载时使用令牌 ping 到服务器并保持每个事件的心跳 n 秒(通常,5s - 60s 很好)。
- 服务器存储生成选项卡连接令牌并存储会话。回复客户。您可以在此处添加一些逻辑,例如。关闭标签。
- 客户端接收响应,处理动作,例如。关闭标签。如果无法关闭,则在顶部放置一个叠加层或删除页面上的所有元素,甚至重定向到另一个页面。
- 记得删除服务器中的超时会话。
推荐阅读
- tomcat - 启动Tomcat有问题
- sql-server - 一个进程中有多少事务
- python - 带赋值操作的列表理解
- java - 使用 google-auth-library-java 从客户端密钥获取新的访问令牌并刷新令牌
- reactjs - Draft.js 编辑器 onTab 未触发嵌套列表
- tomcat9 - 如果可以,我可以将 catalina.log 文件日志复制到另一个文件中吗?如何配置 spring 服务器?
- javascript - 如何在浏览器中真正进行渲染(事件循环)
- tensorflow - 无法加载 tflite 模型,在子图 1 中未获取运算符或张量
- node.js - Botfront 开发不工作。RASA 实例无法访问。火车按钮被禁用
- android - 为什么 Google Cloud Translate API 在 Android 版本 5 和 6 上崩溃?