Как выбрать все вкладки справа от текущей вкладки? - PullRequest
0 голосов
/ 15 ноября 2018

Если щелкнуть правой кнопкой мыши любую вкладку в верхней части браузера Chrome, вы увидите параметр под названием Закрыть вкладки справа .Это закроет все вкладки справа от текущей активной вкладки.Я пытаюсь сделать что-то подобное с расширением Chrome.Можно ли выбрать вкладки справа с помощью цикла, подобного «для индекса текущей активной вкладки до индекса последней вкладки?»

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

  function suspendAllTabs(force) {
    const forceLevel = force ? 1 : 2;
    getCurrentlyActiveTab(activeTab => {
      if (!activeTab) {
        gsUtils.warning(
          'background',
          'Could not determine currently active window.'
        );
        return;
      }
      chrome.windows.get(activeTab.windowId, { populate: true }, curWindow => {
        for (const tab of curWindow.tabs) {
          if (!tab.active) {
            gsTabSuspendManager.queueTabForSuspension(tab, forceLevel);
          }
        }
      });
    });

1 Ответ

0 голосов
/ 15 ноября 2018

Каждая вкладка имеет index, которая показывает ее положение.Например, третья вкладка будет иметь индекс 2 (начинается с 0).

Следовательно, вкладка справа от любой вкладки означает от tab.index +1 до tabs.length

Например,...
Получение вкладок справа от активной вкладки

// get all the tabs in current window
chrome.tabs.query({currentWindow: true}, tabs => {

  let activeIndex;
  for (const tab of tabs) {
    // set the activeIndex so we wont have to run a loop on the tabs twice
    if (tab.active) { activeIndex = tab.index; }

    // tabs to the right of the active tab will have higher index
    if(typeof activeIndex !== 'undefined' && tab.index > activeIndex) {

      // tabs is on the right of the active tab ... do whatever needed
    }
  }
});

Получение вкладок слева от активной вкладки

// get all the tabs in current window
chrome.tabs.query({currentWindow: true}, tabs => {

  for (const tab of tabs) {
    // stop when reached the active tab
    if (tab.active) { break; }

    // tabs to the left of the active tab ... do whatever needed
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...