2010-12-08 56 views
0

J'ai fait cette extension pour Safari qui ferme les onglets inactifs sur la page en coursChrome Extension à boucle pour fermer les onglets non sélectionnés

(var tabss = safari.application.activeBrowserWindow.tabs; 

      for (n=0; n<tabss.length; n++) 
       { 
      if(tabss[n] != safari.application.activeBrowserWindow.activeTab) 

     tabss[n].close(); 
      } 
    ) 

Je veux faire la même chose pour Chrome. Mais Chrome a une façon différente de faire les choses. Je veux toujours exécuter la boucle sur l'index des onglets et les fermer s'ils ne sont pas l'onglet sélectionné. J'ai été capable d'obtenir la longueur de l'index des fenêtres mais je ne sais pas comment faire une boucle de tabulation fermée autant de fois que cela fera en sorte de ne pas fermer l'onglet sélectionné. Je suis en mesure d'obtenir la longueur en faisant ceci:

<html> 
    <head> 
    <script> 
    var targetWindow = null; 
    var tabCount = 0; 

    function start(tab) { 
     chrome.windows.getCurrent(getWindows); 
    } 

    function getWindows(win) { 
     targetWindow = win; 
     chrome.tabs.getAllInWindow(targetWindow.id, getTabs); 
    } 

    function getTabs(tabs) { 
     tabCount = tabs.length; 
     alert(tabCount); 

    } 

    // Set up a click handler so that we can merge all the windows. 
    chrome.browserAction.onClicked.addListener(start); 
    </script> 
    </head> 
</html> 

glanées http://code.google.com/chrome/extensions/samples.html fusion Windows.

Maintenant je veux lancer la boucle mais je n'arrive pas à comprendre comment dire à la boucle de ne pas fermer l'onglet sélectionné. Je pensais que la boucle comparerait l'onglet en boucle à l'ID de l'onglet de la fenêtre sélectionnée et il ne fermera pas cela et passer au numéro d'index de tabulation suivant dans la boucle.

Quelque chose comme:

(
      for (n=0; n<tabCount; n++) 
       { 
      if(chrome.tabs[n].id != tab.id) 

     chrome.tabs[n].remove(); 
      } 
) 

Mais je ne sais pas comment injecter le courant tabid que toutes les fonctions de rappel a ce javascript bidouille/Noob déconcerté. Je ne peux pas introduire une variable d'une autre fonction à partir de ce que je comprends.

Répondre

1

Cela devrait le faire:

// when a browser action is clicked, the callback is called with the current tab 
chrome.browserAction.onClicked.addListener(function(curtab) 
{ 
    // get the current window 
    chrome.windows.getCurrent(function(win) 
    { 
     // get an array of the tabs in the window 
     chrome.tabs.getAllInWindow(win.id, function(tabs) 
     { 
      for (i in tabs) // loop over the tabs 
      { 
       // if the tab is not the selected one 
       if (tabs[i].id != curtab.id) 
       { 
        // close it 
        chrome.tabs.remove(tabs[i].id) 
       } 
      } 
     }); 
    }); 
}); 
+0

Wow. Knocked ces onglets vers le bas rapidement. Merci. J'ai passé des heures la nuit dernière à essayer d'apprendre ce genre de choses. Lol. Merci. – Dave