Расширение Chrome для цикла для закрытия невыбранных вкладок - PullRequest
0 голосов
/ 08 декабря 2010

Я сделал это расширение для Safari, которое закрывает неактивные вкладки на текущей странице

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

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

         tabss[n].close();
             }
    )

Я хочу сделать то же самое для Chrome. Но Chrome имеет другой способ ведения дел. Я все еще хочу запустить цикл по индексу вкладок и закрыть их, если они не выбраны. Я смог получить длину индекса окна, но я не знаю, как сделать цикл закрытия вкладок столько раз, чтобы не закрыть выбранную вкладку. Я смог получить длину, выполнив это:

<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>

Получено из http://code.google.com/chrome/extensions/samples.html Слияние окон.

Теперь я хочу запустить цикл, но не могу понять, как сказать циклу не закрывать выбранную вкладку. Я думал о том, чтобы цикл сравнивал зацикленную вкладку с идентификатором вкладки выбранного окна, и он не будет закрываться и переходить к следующему порядковому номеру вкладки в цикле.

Что-то вроде:

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

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

Но я не знаю, как внедрить текущий табид, так как все функции обратного вызова поставили этот хак / нуб в тупик. Я не могу ввести переменную из другой функции из того, что я понимаю.

1 Ответ

1 голос
/ 08 декабря 2010

Это должно сделать это:

// 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)
                }
            }
        });
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...