有没有办法计算在chrome中打开的标签页的数量?

yshpjwxd  于 2023-02-06  发布在  Go
关注(0)|答案(5)|浏览(770)

我正试图找到一种方法来计算目前在Chrome中由JavaScript打开的标签的数量。
我已经搜索并找到了chrome.tabs.query()。但是当我打开我的控制台并尝试它时,我得到了一个未定义的消息。
Chrome是否不再支持它,或者它只能用于扩展开发?

wnavrhmk

wnavrhmk1#

wscourge has implied一样,chrome.tabs.query()是Chrome扩展API,只对扩展可用,对网页JavaScript不可用,实际上,它只在扩展的后台上下文中可用(即不对内容脚本可用)。
要查找打开的选项卡的数量,您可以执行以下操作:

chrome.tabs.query({windowType:'normal'}, function(tabs) {
    console.log('Number of open tabs in all normal browser windows:',tabs.length);
});

如果你想从控制台运行它,你需要加载一个有背景页面的扩展。然后你需要打开背景页面的控制台。从那个控制台,你可以执行上面的代码。

to94eoyn

to94eoyn2#

我在这里找到了这个问题的答案:https://superuser.com/questions/967064/how-to-get-tab-count-in-chrome-desktop-without-app-extension
转到chrome://inspect/#pages
在JavaScript控制台中运行以下代码行:

document.getElementById("pages-list").childElementCount

选项卡计数将打印到控制台。

qfe3c7zg

qfe3c7zg3#

本地和会话存储

首先在load(打开选项卡)事件中,我们生成选项卡哈希并将其保存在sessionStorage中(不在选项卡之间共享),并作为localStorage中TabsOpen对象的键(在选项卡之间共享)。然后在unload(关闭选项卡)事件中,我们从localStorage中的TabsOpen中删除当前选项卡哈希(保存在sessionStorage中)。

<!doctype html>
<html lang="en">

<head>
    <meta charset="utf-8">
    <title>My project</title>
    ...
    <script>

        function tabLoadEventHandler() {
            let hash = 'tab_' + +new Date();
            sessionStorage.setItem('TabHash',hash);
            let tabs = JSON.parse(localStorage.getItem('TabsOpen')||'{}');
            tabs[hash]=true;
            localStorage.setItem('TabsOpen',JSON.stringify(tabs));
        }
        function tabUnloadEventHandler() {
            let hash= sessionStorage.getItem('TabHash');
            let tabs = JSON.parse(localStorage.getItem('TabsOpen')||'{}');
            delete tabs[hash];
            localStorage.setItem('TabsOpen',JSON.stringify(tabs));
        }
    </script>
    ...
</head>

<body onunload="tabUnloadEventHandler()" onload="tabLoadEventHandler()">
...
</body>

</html>

由于在localStorage的TabsOpen对象中执行了此操作,我们获得了有关当前打开选项卡的信息,可通过

let tabsCount = Object.keys( JSON.parse(localStorage.getItem('TabsOpen')||'{}') ).length
mkh04yzy

mkh04yzy4#

它只能用于扩展开发。
您无法从document级别访问该信息。

xuo3flqw

xuo3flqw5#

这不是一个使用javascript的解决方案,但它可能有助于与另一个解决方案核对计数,这是迄今为止最简单(一次点击)的解决方案,对我来说是有效的:
如果您启用了Chrome同步,只需导航到chrome.google.com/sync
它应该给予你打开的标签页的计数,以及其他计数(例如书签,扩展等)

相关问题