我正试图找到一种方法来计算目前在Chrome中由JavaScript打开的标签的数量。我已经搜索并找到了chrome.tabs.query()。但是当我打开我的控制台并尝试它时,我得到了一个未定义的消息。Chrome是否不再支持它,或者它只能用于扩展开发?
chrome.tabs.query()
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); });
如果你想从控制台运行它,你需要加载一个有背景页面的扩展。然后你需要打开背景页面的控制台。从那个控制台,你可以执行上面的代码。
to94eoyn2#
我在这里找到了这个问题的答案:https://superuser.com/questions/967064/how-to-get-tab-count-in-chrome-desktop-without-app-extension转到chrome://inspect/#pages在JavaScript控制台中运行以下代码行:
chrome://inspect/#pages
document.getElementById("pages-list").childElementCount
选项卡计数将打印到控制台。
qfe3c7zg3#
首先在load(打开选项卡)事件中,我们生成选项卡哈希并将其保存在sessionStorage中(不在选项卡之间共享),并作为localStorage中TabsOpen对象的键(在选项卡之间共享)。然后在unload(关闭选项卡)事件中,我们从localStorage中的TabsOpen中删除当前选项卡哈希(保存在sessionStorage中)。
load
TabsOpen
unload
<!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
mkh04yzy4#
它只能用于扩展开发。您无法从document级别访问该信息。
document
xuo3flqw5#
这不是一个使用javascript的解决方案,但它可能有助于与另一个解决方案核对计数,这是迄今为止最简单(一次点击)的解决方案,对我来说是有效的:如果您启用了Chrome同步,只需导航到chrome.google.com/sync它应该给予你打开的标签页的计数,以及其他计数(例如书签,扩展等)
5条答案
按热度按时间wnavrhmk1#
与wscourge has implied一样,
chrome.tabs.query()
是Chrome扩展API,只对扩展可用,对网页JavaScript不可用,实际上,它只在扩展的后台上下文中可用(即不对内容脚本可用)。要查找打开的选项卡的数量,您可以执行以下操作:
如果你想从控制台运行它,你需要加载一个有背景页面的扩展。然后你需要打开背景页面的控制台。从那个控制台,你可以执行上面的代码。
to94eoyn2#
我在这里找到了这个问题的答案:https://superuser.com/questions/967064/how-to-get-tab-count-in-chrome-desktop-without-app-extension
转到
chrome://inspect/#pages
在JavaScript控制台中运行以下代码行:
选项卡计数将打印到控制台。
qfe3c7zg3#
本地和会话存储
首先在
load
(打开选项卡)事件中,我们生成选项卡哈希并将其保存在sessionStorage中(不在选项卡之间共享),并作为localStorage中TabsOpen
对象的键(在选项卡之间共享)。然后在unload
(关闭选项卡)事件中,我们从localStorage中的TabsOpen
中删除当前选项卡哈希(保存在sessionStorage中)。由于在localStorage的
TabsOpen
对象中执行了此操作,我们获得了有关当前打开选项卡的信息,可通过mkh04yzy4#
它只能用于扩展开发。
您无法从
document
级别访问该信息。xuo3flqw5#
这不是一个使用javascript的解决方案,但它可能有助于与另一个解决方案核对计数,这是迄今为止最简单(一次点击)的解决方案,对我来说是有效的:
如果您启用了Chrome同步,只需导航到chrome.google.com/sync
它应该给予你打开的标签页的计数,以及其他计数(例如书签,扩展等)