Это способ, которым Firefox в настоящее время использует для подсчета открытых окон и вкладок, для телеметрии:
function getOpenTabsAndWinsCounts() {
let tabCount = 0;
let winCount = 0;
for (let win of Services.wm.getEnumerator("navigator:browser")) {
winCount++;
tabCount += win.gBrowser.tabs.length;
}
return { tabCount, winCount };
}
Обратите внимание, как он повторяет результаты Services.wm.getEnumerator("navigator:browser")
, чтобызахватывать номера всех разных открытых окон.
В зависимости от того, где вы хотите использовать скрипт, вам, возможно, придется использовать var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator)
вместо Services.wm
, как предлагает @ Shugar.