2012-08-11 16 views
8

Gibt es eine Möglichkeit, alle geöffneten Tabs abzurufen und sie in einem Array in Chrome zu sortieren? Wenn also Google Mail und YouTube geöffnet wären, gäbe es im Array zwei Einträge mit dem Namen "gmail.com" und "youtube.com".Welche Tabs sind in Chrome geöffnet?

Antwort

9

Ja, hier ist, wie Sie dies tun können:

Hinweis: diese Berechtigung "Tabs" erfordert in Ihrer Manifest-Datei angegeben werden.

chrome.windows.getAll({populate:true}, getAllOpenWindows); 

function getAllOpenWindows(winData) { 

    var tabs = []; 
    for (var i in winData) { 
    if (winData[i].focused === true) { 
     var winTabs = winData[i].tabs; 
     var totTabs = winTabs.length; 
     for (var j=0; j<totTabs;j++) { 
      tabs.push(winTabs[j].url); 
     } 
    } 
    } 
    console.log(tabs); 
} 

In diesem Beispiel habe ich gerade Tab url bin das Hinzufügen, wie Sie in einem Array gefragt, aber jeder „Tab“ Objekt enthält viel mehr Informationen. URL ist die vollständige URL, auf die Sie einen regulären Ausdruck anwenden können, um die Domänennamen aus der URL zu extrahieren.

+1

Wie kann die Berechtigung "Tabs" in der Manifestdatei angegeben werden? Was sollte ich in die Manifestdatei schreiben, um diese Option zu aktivieren? –

+0

'chrome.windows' ist undefined ... Was machen Sie in diesem Fall? –

3

Sofern Sie kein Plugin erstellen, gibt es keine Möglichkeit, alle Namen der geöffneten Registerkarten abzurufen, insbesondere wenn die Registerkarten Inhalte aus separaten Domänen enthalten. Wenn Sie in der Lage wären, so etwas zu tun, könnte das ein Sicherheitsrisiko sein!

Sie können die Dokumentation Chrome hier überprüfen: http://developer.chrome.com/extensions/devguide.html

+0

Ich baue ein Chrome-Plugin. – Ray

+0

Es sind schlechte Nachrichten, da ich versuche, alle Tabs manuell von Chrome zu Firefox zu migrieren (die andere Richtung ist einfach, da ich Firefox dazu bringen kann, irgendein Skript auf chrome: // level auszuführen). – lilydjwg

Verwandte Themen