我需要能够识别出我在浏览器中的哪个选项卡。难道我不能从浏览器中获得一些信息来识别选项卡吗?我不需要知道任何关于其他标签的信息,我只需要我所在标签的id。它可以是一个随机的或连续的数字,也可以是一个日期-时间戳,只要它在选项卡的生命周期中保持不变。
我有一个客户端应用程序,它通过HTTP建立到远程服务器的BOSH连接,如果我在多个选项卡中打开它,每个实例都需要自己的唯一id,否则应用程序就会失败,所以我只需要一些唯一的编号,只要该选项卡存在就会与该选项卡关联(即,当我浏览提供此应用程序的站点时,页面刷新会继续存在)。这看起来很简单,应该只在浏览器中提供,就像window.tabId一样--这就是我需要的。我有一个严重的开发障碍,因为我无法通过这个似乎不存在的简单、简单、简单的解决方案。必须有一种方法(一个跨浏览器的解决方案)。
有什么想法吗?
发布于 2016-04-23 15:14:01
SessionStorage是针对每个选项卡/窗口的,因此您可以在sessionStorage中定义一个随机数,如果存在,则首先获取它:
var tabID = sessionStorage.tabID ?
sessionStorage.tabID :
sessionStorage.tabID = Math.random();更新
在某些情况下,您可能在多个选项卡中具有相同的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';
});发布于 2012-08-10 14:39:05
您必须使用html5,但是sessionStorage与随机guid的组合似乎就是您想要的。
发布于 2018-09-07 16:26:16
因为我没有找到像windows.currentTabIndex这样简单的Javascript函数,所以我编写了几行Javascript,以便在加载每个浏览器选项卡时固定它们上的ID。
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模板进行开发,所以这只在一个地方定义:-)
https://stackoverflow.com/questions/11896160
复制相似问题