首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >有没有办法在JavaScript中识别浏览器选项卡?

有没有办法在JavaScript中识别浏览器选项卡?
EN

Stack Overflow用户
提问于 2012-08-10 13:50:41
回答 10查看 83.4K关注 0票数 48

我需要能够识别出我在浏览器中的哪个选项卡。难道我不能从浏览器中获得一些信息来识别选项卡吗?我不需要知道任何关于其他标签的信息,我只需要我所在标签的id。它可以是一个随机的或连续的数字,也可以是一个日期-时间戳,只要它在选项卡的生命周期中保持不变。

我有一个客户端应用程序,它通过HTTP建立到远程服务器的BOSH连接,如果我在多个选项卡中打开它,每个实例都需要自己的唯一id,否则应用程序就会失败,所以我只需要一些唯一的编号,只要该选项卡存在就会与该选项卡关联(即,当我浏览提供此应用程序的站点时,页面刷新会继续存在)。这看起来很简单,应该只在浏览器中提供,就像window.tabId一样--这就是我需要的。我有一个严重的开发障碍,因为我无法通过这个似乎不存在的简单、简单、简单的解决方案。必须有一种方法(一个跨浏览器的解决方案)。

有什么想法吗?

EN

回答 10

Stack Overflow用户

发布于 2016-04-23 15:14:01

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

代码语言:javascript
运行
复制
var tabID = sessionStorage.tabID ? 
            sessionStorage.tabID : 
            sessionStorage.tabID = Math.random();

更新

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

代码语言:javascript
运行
复制
var tabID = sessionStorage.tabID && 
            sessionStorage.closedLastTab !== '2' ? 
            sessionStorage.tabID : 
            sessionStorage.tabID = Math.random();
sessionStorage.closedLastTab = '2';
$(window).on('unload beforeunload', function() {
      sessionStorage.closedLastTab = '1';
});
票数 49
EN

Stack Overflow用户

发布于 2012-08-10 14:39:05

您必须使用html5,但是sessionStorage与随机guid的组合似乎就是您想要的。

票数 15
EN

Stack Overflow用户

发布于 2018-09-07 16:26:16

因为我没有找到像windows.currentTabIndex这样简单的Javascript函数,所以我编写了几行Javascript,以便在加载每个浏览器选项卡时固定它们上的ID。

代码语言:javascript
运行
复制
function defineTabID()
    {
    var iPageTabID = sessionStorage.getItem("tabID");
      // if it is the first time that this page is loaded
    if (iPageTabID == null)
        {
        var iLocalTabID = localStorage.getItem("tabID");
          // if tabID is not yet defined in localStorage it is initialized to 1
          // else tabId counter is increment by 1
        var iPageTabID = (iLocalTabID == null) ? 1 : Number(iLocalTabID) + 1;
          // new computed value are saved in localStorage and in sessionStorage
        localStorage.setItem("tabID",iPageTabID);
        sessionStorage.setItem("tabID",iPageTabID);
        }
    }

这段代码将最后一个选项卡的索引保存在localStorage中以更新新选项卡的当前值,并保存在sessionStorage中以修复页面的id!

我必须在应用程序的每个页面中调用defineTabId()函数。因为我使用JSF模板进行开发,所以这只在一个地方定义:-)

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11896160

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档