Skip to content

Instantly share code, notes, and snippets.

@navtej
Created August 6, 2016 11:36
Show Gist options
  • Save navtej/75ad1d9615a0bd6f2cfa0d9eb2611a18 to your computer and use it in GitHub Desktop.
Save navtej/75ad1d9615a0bd6f2cfa0d9eb2611a18 to your computer and use it in GitHub Desktop.
Some Functions TO work With Tabs Using MozRepl/Browser Console
/* From some a gist by someone */
function next_tab_by_title(title_re) {
var tabContainer = window.getBrowser().tabContainer;
var tabs = tabContainer.childNodes;
var numTabs = tabs.length;
var startIndex = tabContainer.selectedIndex;
var testIndex;
for (i = 0; i < numTabs - 1; i++) {
testIndex = (startIndex + i + 1) % numTabs;
if (tabs[testIndex].label.match(title_re)) {
tabContainer.selectedItem = tabs[testIndex];
break;
}
}
}
function random_tab(title_re) {
/* from SO answer */
function getRandomInt(min, max) {
return Math.floor(Math.random() * (max - min + 1)) + min;
}
var tabContainer = window.getBrowser().tabContainer;
var tabs = tabContainer.childNodes;
var numTabs = tabs.length;
var randInt = getRandomInt(0,numTabs);
tabContainer.selectedItem = tabs[randInt];
}
function print_all_urls() {
var tabContainer = window.getBrowser().tabContainer;
var tabs = tabContainer.childNodes;
var numTabs = tabs.length;
var startIndex = tabContainer.selectedIndex;
var testIndex;
for (i = 0; i < numTabs - 1; i++) {
testIndex = (startIndex + i + 1) % numTabs;
repl.print(tabs[testIndex].linkedBrowser.currentURI.spec);
}
}
function print_domains(){
var tabContainer = window.getBrowser().tabContainer;
var tabs = tabContainer.childNodes;
var numTabs = tabs.length;
var startIndex = tabContainer.selectedIndex;
var testIndex;
var all_doms = new Array();
for (i = 0; i < numTabs - 1; i++) {
testIndex = (startIndex + i + 1) % numTabs;
var dom = tabs[testIndex].linkedBrowser.currentURI.host;
var is_in_all_doms = (all_doms.indexOf(dom) > -1);
if (is_in_all_doms) continue;
all_doms.push(dom);
}
repl.print("ALl DOmains -> "+all_doms.length);
for (i = 0; i < all_doms.length ; i++) {
repl.print(all_doms[i]);
}
}
function sortProperties(obj, isNumericSort)
{
isNumericSort=isNumericSort || false; // by default text sort
var sortable=[];
for(var key in obj)
if(obj.hasOwnProperty(key))
sortable.push([key, obj[key]]);
if(isNumericSort)
sortable.sort(function(a, b)
{
return a[1]-b[1];
});
else
sortable.sort(function(a, b)
{
var x=a[1].toLowerCase(),
y=b[1].toLowerCase();
return x<y ? -1 : x>y ? 1 : 0;
});
return sortable; // array in format [ [ key1, val1 ], [ key2, val2 ], ... ]
}
function print_domains_tabcount(){
var tabContainer = window.getBrowser().tabContainer;
var tabs = tabContainer.childNodes;
var numTabs = tabs.length;
var startIndex = tabContainer.selectedIndex;
var testIndex;
var all_doms = {};
for (i = 0; i < numTabs - 1; i++) {
testIndex = (startIndex + i + 1) % numTabs;
var dom = tabs[testIndex].linkedBrowser.currentURI.host;
var is_in_all_doms = all_doms.hasOwnProperty(dom) ;
if (is_in_all_doms) {
all_doms[dom] = all_doms[dom]+1;
} else {
all_doms[dom] = 1;
}
}
return sortProperties(all_doms,1);
}
function next_tab_by_url(title_re) {
var tabContainer = window.getBrowser().tabContainer;
var tabs = tabContainer.childNodes;
var numTabs = tabs.length;
var startIndex = tabContainer.selectedIndex;
var testIndex;
for (i = 0; i < numTabs - 1; i++) {
testIndex = (startIndex + i + 1) % numTabs;
if (tabs[testIndex].linkedBrowser.currentURI.spec.match(title_re)) {
tabContainer.selectedItem = tabs[testIndex];
break;
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment