use*_*877 35 javascript browser tabs uniqueidentifier
我需要能够识别我在浏览器中的标签.我是否可以通过浏览器获取一些信息来识别标签?我不需要知道任何其他选项卡,我只需要我所在选项卡的ID.它可以是随机或顺序编号,或日期时间戳,只要它保持相同的标签的生命.
我有一个客户端应用程序,通过HTTP连接到远程服务器,如果我在多个选项卡中打开它,每个实例需要自己唯一的ID或应用程序失败,所以我只需要一些与之关联的唯一编号只要该选项卡存在的选项卡(即,当我浏览提供此应用程序的站点时,页面刷新后存活的内容).看起来像是在浏览器中可以使用的明智之举,比如window.tabId - 这就是我所需要的.我有一个严肃的开发块,因为我无法通过这个似乎不存在的简单,简单,简单的解决方案.必须有一种方法(跨浏览器解决方案).
有任何想法吗?
Mo *_*ami 32
SessionStorage是每个选项卡/窗口,因此您可以在sessionStorage中定义一个随机数,如果存在则首先获取它:
var tabID = sessionStorage.tabID ? sessionStorage.tabID : sessionStorage.tabID = Math.random();
Run Code Online (Sandbox Code Playgroud)
更新:
在某些情况下,您可能在多个选项卡中具有相同的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';
});
Run Code Online (Sandbox Code Playgroud)
jmo*_*eno 12
你必须使用html5,但sessionStorage结合随机guid似乎是你想要的.
这是一种tabId在页面加载后可用的方法-tabId即使在刷新后也保持相同。
这也解决了重复的标签的问题,因为tabId从清除sessionStorage。
window.addEventListener("beforeunload", function (e)
{
window.sessionStorage.tabId = window.tabId;
return null;
});
window.addEventListener("load", function (e)
{
if (window.sessionStorage.tabId)
{
window.tabId = window.sessionStorage.tabId;
window.sessionStorage.removeItem("tabId");
}
else
{
window.tabId = Math.floor(Math.random() * 1000000);
}
return null;
});
Run Code Online (Sandbox Code Playgroud)
访问tabId使用window.tabId.
beforeunload需要该事件以保持tabId刷新后具有相同的可用 id。
该load事件需要:
tabId.tabId刷新后加载相同的内容- 如果存在。* 我真的不知道为什么我应该做return null或返回。只是读到不返回可能会导致函数不起作用:(
由于我没有找到像这样的简单Javascript函数windows.currentTabIndex,因此我写了一些Java代码来修复每个浏览器选项卡在加载时的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);
}
}
Run Code Online (Sandbox Code Playgroud)
此代码保存最后一个标签的索引,localStorage以更新新标签的当前值,并保存该标签sessionStorage的ID!
我必须defineTabId()在应用程序的每一页中调用函数。由于我使用JSF模板进行开发,因此只能在一个地方定义它:-)
您无法使用javascript获取标签页ID,但是当用户打开新标签页时,有什么解决方案可以像使用其他会话/ cookies一样为您提供帮助。
一些参考:
| 归档时间: |
|
| 查看次数: |
58700 次 |
| 最近记录: |