Ho *_* Ha 8 javascript google-chrome google-chrome-extension
我正在尝试找到一种方法来计算当前通过 javascript 在 Chrome 中打开的标签数量。
我已经搜索并找到了chrome.tabs.query()。但是当我打开我的控制台并尝试它时,我收到了一条未定义的消息。
是不是 Chrome 不再支持了,还是只能用于扩展开发?
Kam*_*ski 11
如果我们只想计算我们网站上的选项卡 - 首先在页面上load(打开选项卡)事件,我们会生成选项卡哈希并将其保存在 sessionStorage 中(不在选项卡之间共享)并作为TabsOpenlocalStorage 中对象的键(在选项卡之间共享) 。然后在事件页面unload(关闭选项卡)中,我们从 localStorage 中删除当前选项卡哈希(保存在 sessionStorage 中)TabsOpen。
<!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>Run Code Online (Sandbox Code Playgroud)
由于TabsOpenlocalStorage 中的对象,我们获得了有关当前打开的选项卡的信息,可以通过以下方式读取这些信息
let tabsCount = Object.keys( JSON.parse(localStorage.getItem('TabsOpen')||'{}') ).length
Run Code Online (Sandbox Code Playgroud)
正如wscourge 所暗示的那样,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);
});
Run Code Online (Sandbox Code Playgroud)
如果您想从控制台运行它,您将需要加载一个具有后台页面的扩展程序。然后您需要打开后台页面的控制台。从该控制台,您可以执行上述代码。
我在这里找到了这个问题的答案: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
Run Code Online (Sandbox Code Playgroud)
标签计数将打印到控制台。
| 归档时间: |
|
| 查看次数: |
16188 次 |
| 最近记录: |