有没有办法计算Chrome中打开的标签数?

时间:2017-02-08 09:30:45

标签: javascript google-chrome google-chrome-extension

我正试图找到一种方法来计算当前在Chrome中通过javascript打开的多个标签。

我搜索过chrome.tabs.query()。但当我打开我的控制台并尝试它时,我得到了一个未定义的消息。

Chrome不再支持它,还是只能用于扩展程序开发?

4 个答案:

答案 0 :(得分:2)

它只能用于扩展开发。

您无法从document级别访问该信息。

答案 1 :(得分:2)

作为wscourge has impliedchrome.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);
}); 

如果要从控制台运行此程序,则需要加载具有后台页面的扩展程序。然后,您需要打开the console for the background page。从该控制台,您可以执行上述代码。

答案 2 :(得分:1)

我在这里找到了此问题的答案: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

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

答案 3 :(得分:1)

本地和会话存储

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

<!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