有什么方法可以在 JavaScript 中识别浏览器选项卡吗?

2023-12-03

我需要能够识别我在浏览器中的哪个选项卡。难道我不能从浏览器中获取一些信息来识别该选项卡吗?我不需要知道任何其他选项卡的任何信息,我只需要我所在选项卡的 id。它可以是随机数或序列号,也可以是日期时间戳,只要它与当前选项卡保持不变即可。选项卡的寿命。

我有一个客户端应用程序,它通过 HTTP 连接 BOSH 到远程服务器,如果我在多个选项卡中打开它,每个实例都需要自己的唯一 ID,否则应用程序会失败,所以我只需要一些与只要该选项卡存在(即,当我导航提供此应用程序的网站时,页面刷新后仍然存在的选项卡)。看起来很简单,应该只在浏览器中可用,比如 window.tabId - 这就是我所需要的。我遇到了严重的开发障碍,因为我无法克服这个似乎不存在的简单、简单、简单的解决方案。一定有办法(跨浏览器解决方案)。

有任何想法吗?


SessionStorage 是针对每个选项卡/窗口的,因此您可以在 sessionStorage 中定义一个随机数,并首先获取它(如果存在):

var tabID = sessionStorage.tabID ? 
            sessionStorage.tabID : 
            sessionStorage.tabID = Math.random();

UPDATE:
在某些情况下,您可能在多个选项卡中具有相同的 sessionStorage (例如,当您复制选项卡时)。在这种情况下,以下代码可能会有所帮助:

var tabID = sessionStorage.tabID && 
            sessionStorage.closedLastTab !== '2' ? 
            sessionStorage.tabID : 
            sessionStorage.tabID = Math.random();
sessionStorage.closedLastTab = '2';
$(window).on('unload beforeunload', function() {
      sessionStorage.closedLastTab = '1';
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

有什么方法可以在 JavaScript 中识别浏览器选项卡吗? 的相关文章

随机推荐

  • 如何正确集成HSQLDB和Spring Boot?

    我看到了这个帖子 如何从 Spring boot 应用程序以服务器模式启动 HSQLDB但无法让它发挥作用 我的目标是构建一个 Spring boot 应用程序 以服务器模式启动 HSQLDB 并具有文件持久性 以便在我重新启动应用程序时将
  • Amazon RDS - 是否有更改 SQL Server 中的数据库时区的解决方法?

    亚马逊最近宣布支持 Oracle RDS 中的时区更改 由于 Microsoft SQL Server 2012 仍然不支持此功能 是否有任何解决方法来获得类似于更改整个数据库时区的功能 既然您要求解决方法 我们基本上完全忽略服务器时间 数
  • 如何从 PEM 编码证书确定 SSL 证书到期日期?

    如果我在 Mac 或 Linux 中拥有实际文件和 Bash shell 我如何查询证书文件的过期时间 不是网站 而是证书文件本身 假设我有 csr 密钥 pem 和链文件 With openssl openssl x509 enddate
  • CSS 改变 h1 中最后一个单词的颜色

    我有一个正在使用 CSS3 开发的网站 并且我有h1标题标签 h1 main title h1 现在我希望标题采用不同的颜色 h1 main span title span h1 So I do h1 color ddd h1 span c
  • Swift Parse - 本地数据存储并在表视图中显示对象

    我正在构建一个应用程序 通过解析将对象保存在本地数据存储中 然后 我运行一个查询来检索本地数据存储中的对象 它工作正常 但是 我想获取该对象及其中的内容 并根据解析本地数据存储对象中存储的项目在表视图单元格中设置一些标签 例如 我创建一个具
  • Spring @PostFilter 什么时候执行?

    我使用 spring 的 Around 注释来提供 DAO 调用的缓存 并使用 spring security 的 PostFilter 来限制某些记录的查看 但是我担心缓存可能会绕过 PostFilter 并带来安全问题 我如何知道什么顺
  • 如何导入两个同名的库

    在 Python 中 可以在 Pypi python magic 和 filemagic 上找到两个库 https pypi org project python magic https pypi org project filemagic
  • 如何在Servlet中发送重定向到JSP页面

    当我在 servlet 中完成处理并且结果有效时 我需要将响应重定向到另一个 JSP 页面 例如welcome jsp在网页内容文件夹中 我该怎么做 例如 protected void doPost HttpServletRequest r
  • 是否可以从现有图形对象创建子图?

    我有一个具有相同 x 轴的预先存在的图形列表 我想将它们堆叠在一个画布上 例如 在这里我分别生成两个图形 如何将它们放在一个图上 import matplotlib pyplot as plt time 0 1 2 3 4 y1 range
  • Facebook PHP SDK - 将用户数据存储到 MYSql 数据库中

    我对 PHP 和 MySQL 完全陌生 但我正在我的网站中实现 Facebook PHP SDK 到目前为止一切正常 但我正在努力将用户数据添加到我的数据库 MySQL 中 我所拥有的一切都是一个数字 而不是用户名和 oauth uid 我
  • 如何知道键盘在文本输入时是否处于活动状态

    我有一个类似于屏幕键盘的应用程序 我需要它知道任何地方是否有键盘光标 插入符号 处于活动状态 因此键盘将设置为活动状态 我搜索了键盘钩子和winapi 但找不到正确的使用方法 为了简化我的问题 如果用户可以按下真实键盘并在计算机上打印文本
  • 我是否需要调整令牌权限才能成功调用 CreateRemoteThread?

    我正在为我的应用程序开发一个调试工具 以帮助我诊断死锁 该应用程序在我客户的计算机上运行 因此我期望有广泛的操作系统 安全策略等 我使用的技术是在目标应用程序中实现一个函数 该函数生成所有线程的堆栈跟踪以及其他诊断信息 然后将其写入内存映射
  • Python 中的“无法启动新线程错误”

    我正在运行一个脚本 该脚本从 debian 软件包中提取信息并将其保存在数据库中 从大约 100 个包中提取信息后 出现错误 错误是 无法启动新线程 为什么我会遇到这个错误 可能的解决方案是什么 这是用于保存数据的代码 for i in l
  • 使用 Java-8 Streams API 将字符串列表转换为映射

    我有清单 List
  • 吉他调音器频率

    我正在为 iOS 制作一个吉他调音器Objective C 由于事实上我是Beginner我正在努力收集有关它的所有资源和信息 我知道这个理论 如果我错了 请纠正我 首先我需要从麦克风获取输入 然后需要申请申请FFT获取频率的算法 然后比较
  • ASP.NET C# 添加/更新用户到角色

    大家好 我有一个页面显示住宿信息 然后显示在详细信息视图中创建该信息的人的用户 ID 我还有一个按钮 应该查看该用户 ID 单击该按钮时将该用户 ID 转换为用户名 以便我可以使用该用户名将人员角色更改为租户 但是我不确定使用 C 如何从详
  • LINQ 与 SPARQL 的比较? [关闭]

    Closed 这个问题需要多问focused 目前不接受答案 我不是 MS NET 用户 但对 LINQ 感到好奇 这篇文章http www linqpad net WhyLINQBeatsSQL aspx很好地解释了为什么它比 SQL 更
  • 功能请求:gwan.h 中包含的atomicAdd() 函数

    在 G WAN KV 选项中 KV INCR KEY将使用第一个字段作为主键 这意味着 G WAN 核心中已经内置了一个以原子方式递增的函数 以使该主索引正常工作 最好将此函数开放给 servlet 使用 即包含在 gwan h 中 通过这
  • 如何在div上叠加图像?

    我想在边框上放置一个小的圆形登录图像div这样半个图像将在边界线之外只是为了样式目的 我想我必须设置 z index 但如何或有没有更好的方法 这正是您需要做的 给你 img 一个类名 然后在你的样式表中添加类似这样的内容 classnam
  • 有什么方法可以在 JavaScript 中识别浏览器选项卡吗?

    我需要能够识别我在浏览器中的哪个选项卡 难道我不能从浏览器中获取一些信息来识别该选项卡吗 我不需要知道任何其他选项卡的任何信息 我只需要我所在选项卡的 id 它可以是随机数或序列号 也可以是日期时间戳 只要它与当前选项卡保持不变即可 选项卡