首页 > 解决方案 > JavaScript 标签数量

问题描述

有没有办法检查用户是否打开了多个选项卡(不是全局的,仅在我的网站上)或者用户打开了多少个选项卡?在最好的情况下,我需要数量,但布尔值就足够了。我需要一个没有 jQuery 或其他东西的 vanilla JavaScript (ES6) 解决方案。

先感谢您。

标签: javascript

解决方案


您可以为每个打开的选项卡创建一个 ID,并将其保存在一个数组中localStoragedocument.cookie也可以,但需要更多的努力来获取和设置):

var tabId = Math.random();
var tabs = JSON.parse(localStorage.getItem('tabs')) || [];
tabs.push(tabId);
localStorage.setItem('tabs', JSON.stringify(tabs));

现在,要检查我们在当前域上打开了多少个选项卡,我们检查tabslocalStorage 中数组的长度:

function getTabCount()
{
    return JSON.parse(localStorage.getItem('tabs')).length;
}

现在,您可以使用getTabCount()来获取当前打开的选项卡的数量。

最后,我们需要确保我们的 tabId 在我们关闭它时从数组中删除:

window.addEventListener('beforeunload', function(e)
{
    tabs = JSON.parse(localStorage.getItem('tabs'));
    var index = tabs.indexOf(tabId);
    if (index !== -1)
        tabs.splice(index, 1);
    localStorage.setItem('tabs', JSON.stringify(tabs));
});

请记住,您需要继续使用getTabCount()以检查自上次使用以来是否打开或关闭了任何选项卡。


推荐阅读