在Mozilla Firefox中,如何提取当前打开的选项卡的数量以保存在其他位置?

时间:2013-04-08 16:33:42

标签: firefox sqlite

我想自动计算在Firefox中打开的标签数量,以便随时跟踪。

因此,我无法获得一个在状态栏或浏览器中其他位置显示当前号码的插件。

我已经查看了firefox为每个配置文件保存的.sqlite表的内容,但我无法破译是否有当前打开的选项卡表。我还查看历史表中是否有一个列,告诉该页面当前是否打开。

这些信息是否在数据库中可用?

如果是,那么存储哪些信息可用于计算当前打开的标签数?

如果没有,附加组件如何,例如Tab Counter找出这个号码?我将向开发人员提出的最后一个问题,如果它不是常见的知识,我可以在这里得到答案,而不是要求那些可能希望你使用他或她的附加组件的人。

4 个答案:

答案 0 :(得分:9)

在线

在正在运行的Firefox会话中,使用Mozilla Add-on API轻松提取数据。我写了一个简单的Tab Count Logger扩展来执行此操作,并将计数保存到SQLite数据库。

代码的相关部分是:

const tabs = require("sdk/tabs");
const windows = require("sdk/windows").browserWindows;

console.log("Windows: " + windows.length + "; tabs: " + tabs.length);

离线

打开的选项卡存储在配置文件目录中的sessionstore.js中,而不是存储在SQLite中。这个文件是JSON。计算标签的脚本:

#!/usr/bin/env python3
# Count open tabs from a firefox profile
# Working directory is the root of a Firefox profile.
import json
j = json.loads(open("sessionstore.js", 'rb').read().decode('utf-8'))
def info_for_tab(tab):
    try:
        return (tab['entries'][0]['url'], tab['entries'][0]['title'])
    except IndexError:
        return None
    except KeyError:
        return None
def tabs_from_windows(window):
    return list(map(info_for_tab, window['tabs']))
all_tabs = list(map(tabs_from_windows, j['windows']))
print('Statistics: {wins} windows, {tabs} total tabs'.format(wins=len(all_tabs), tabs=sum(map(len, all_tabs))))

将此项保存到~/bin/firefox_count_tabs后,您可以获取所有个人资料的信息,如下所示:

for i in ~/.mozilla/firefox/*.*; do test -d $i && (echo "== $i =="; cd $i; ~/bin/firefox_count_tabs ); done

答案 1 :(得分:8)

打开about:telemetry链接。

scalars下,您会找到browser.engagement.max_concurrent_tab_count键,其值会显示打开的标签页数。

答案 2 :(得分:2)

@Xidus:历史记录和书签存储在places.sqlite中。你无法在这里确定标签和窗口信息.tabs和windows信息存储在sessionstore.js文件中。你可以参考这个链接:

http://kb.mozillazine.org/sessionstore.js http://forums.mozillazine.org/viewtopic.php?f=38&t=622036&start=60&p=12098147#p12098147

答案 3 :(得分:0)

计数将显示在退出确认对话框中-如果您尚未禁用?️