chrome.tabs

Описание

Используйте API chrome.tabs для взаимодействия с системой вкладок браузера. Вы можете использовать этот API для создания, изменения и перестановки вкладок в браузере.

Обзор

API вкладок не только предлагает функции для манипулирования и управления вкладками, но также может определять язык вкладки, делать снимки экрана и взаимодействовать со сценариями содержимого вкладки.

Разрешения

Для использования большинства функций не требуются какие-либо разрешения. Например: создание новой вкладки, перезагрузка вкладки, переход на другой URL-адрес и т. д.

Существует три разрешения, о которых разработчики должны знать при работе с API вкладок.

Разрешение «вкладки»
Это разрешение не предоставляет доступ к пространству имен chrome.tabs . Вместо этого он предоставляет расширению возможность вызывать tabs.query() для четырех конфиденциальных свойств экземпляров tabs.Tab : url , pendingUrl , title и favIconUrl .
Разрешения хоста
Разрешения хоста позволяют расширению читать и запрашивать четыре конфиденциальные вкладки соответствующей вкладки. Свойства tabs.Tab . Они также могут напрямую взаимодействовать с соответствующими вкладками, используя такие методы, как tabs.captureVisibleTab() , tabs.executeScript() , tabs.insertCSS() и tabs.removeCSS() .
Разрешение «activeTab»
activeTab предоставляет расширению временное разрешение хоста для текущей вкладки в ответ на вызов пользователя. В отличие от разрешений хоста, activeTab не выдает никаких предупреждений.

Манифест

Ниже приведены примеры объявления каждого разрешения в манифесте :

  {
    "name": "My extension",
    ...
    "permissions": [
      "tabs"
    ],
    ...
  }

  {
    "name": "My extension",
    ...
    "host_permissions": [
      "http://*/*",
      "https://*/*"
    ],
    ...
  }

  {
    "name": "My extension",
    ...
    "permissions": [
      "activeTab"
    ],
    ...
  }

Варианты использования

В следующих разделах демонстрируются некоторые распространенные случаи использования.

Открытие страницы расширения в новой вкладке

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

фон.js:

chrome.runtime.onInstalled.addListener(({reason}) => {
  if (reason === 'install') {
    chrome.tabs.create({
      url: "onboarding.html"
    });
  }
});

Получить текущую вкладку

В этом примере показано, как сервис-воркер расширения может получить активную вкладку из окна, находящегося в фокусе в данный момент (или окна, находящегося в последнем фокусе, если ни одно окно Chrome не находится в фокусе). Обычно это можно рассматривать как текущую вкладку пользователя.

  async function getCurrentTab() {
    let queryOptions = { active: true, lastFocusedWindow: true };
    // `tab` will either be a `tabs.Tab` instance or `undefined`.
    let [tab] = await chrome.tabs.query(queryOptions);
    return tab;
  }

  function getCurrentTab(callback) {
    let queryOptions = { active: true, lastFocusedWindow: true };
    chrome.tabs.query(queryOptions, ([tab]) => {
      if (chrome.runtime.lastError)
      console.error(chrome.runtime.lastError);
      // `tab` will either be a `tabs.Tab` instance or `undefined`.
      callback(tab);
    });
  }

Отключить звук на указанной вкладке

В этом примере показано, как расширение может переключать состояние отключения звука для данной вкладки.

  async function toggleMuteState(tabId) {
    const tab = await chrome.tabs.get(tabId);
    const muted = !tab.mutedInfo.muted;
    await chrome.tabs.update(tabId, {muted});
    console.log(`Tab ${tab.id} is ${muted ? "muted" : "unmuted"}`);
  }

  function toggleMuteState(tabId) {
    chrome.tabs.get(tabId, async (tab) => {
      let muted = !tab.mutedInfo.muted;
      await chrome.tabs.update(tabId, { muted });
      console.log(`Tab ${tab.id} is ${ muted ? "muted" : "unmuted" }`);
    });
  }

Переместить текущую вкладку на первую позицию при нажатии

В этом примере показано, как переместить вкладку во время перетаскивания, а может и нет. Хотя в этом примере используется chrome.tabs.move , вы можете использовать тот же шаблон ожидания для других вызовов, которые изменяют вкладки во время перетаскивания.

  chrome.tabs.onActivated.addListener(moveToFirstPosition);

  async function moveToFirstPosition(activeInfo) {
    try {
      await chrome.tabs.move(activeInfo.tabId, {index: 0});
      console.log("Success.");
    } catch (error) {
      if (error == "Error: Tabs cannot be edited right now (user may be dragging a tab).") {
        setTimeout(() => moveToFirstPosition(activeInfo), 50);
      } else {
        console.error(error);
      }
    }
  }

  chrome.tabs.onActivated.addListener(moveToFirstPositionMV2);

  function moveToFirstPositionMV2(activeInfo) {
    chrome.tabs.move(activeInfo.tabId, { index: 0 }, () => {
      if (chrome.runtime.lastError) {
        const error = chrome.runtime.lastError;
        if (error == "Error: Tabs cannot be edited right now (user may be dragging a tab).") {
          setTimeout(() => moveToFirstPositionMV2(activeInfo), 50);
        } else {
          console.error(error);
        }
      } else {
        console.log("Success.");
      }
    });
  }

Передать сообщение в скрипт содержимого выбранной вкладки

В этом примере показано, как сервис-воркер расширения может взаимодействовать со сценариями содержимого на определенных вкладках браузера с помощью tabs.sendMessage() .

function sendMessageToActiveTab(message) {
  const [tab] = await chrome.tabs.query({ active: true, lastFocusedWindow: true });
  const response = await chrome.tabs.sendMessage(tab.id, message);
  // TODO: Do something with the response.
}

Примеры расширений

Для получения дополнительных демонстраций расширений Tabs API изучите любое из следующего:

Типы

MutedInfo

Хром 46+

Состояние отключения звука вкладки и причина последнего изменения состояния.

Характеристики

  • идентификатор расширения

    строка необязательна

    Идентификатор расширения, которое изменило состояние отключения звука. Не устанавливается, если расширение не было причиной последнего изменения состояния отключения звука.

  • приглушенный

    логическое значение

    Отключен ли звук на вкладке (запрещено воспроизведение звука). Звук на вкладке может быть отключен, даже если на ней не воспроизводился или в данный момент не воспроизводится звук. Эквивалентно тому, отображается ли индикатор «отключенного звука».

  • причина

    MutedInfoReason необязательно

    Причина, по которой звук на вкладке был отключен или включен. Не устанавливается, если состояние отключения звука на вкладке никогда не менялось.

MutedInfoReason

Хром 46+

Событие, вызвавшее изменение состояния без звука.

Перечисление

"пользователь"
Действие пользовательского ввода устанавливает отключенный звук.

"захватывать"
Захват вкладки был начат, что привело к изменению состояния без звука.

"расширение"
Расширение, идентифицируемое полем ExtensionId, установило состояние отключения звука.

Tab

Характеристики

  • активный

    логическое значение

    Активна ли вкладка в своем окне. Это не обязательно означает, что окно сфокусировано.

  • слышимый

    логическое значение необязательно

    Хром 45+

    Издавала ли вкладка звук в течение последних нескольких секунд (но его можно было бы не услышать, если бы он также был отключен). Эквивалентно тому, отображается ли индикатор «звук динамика».

  • автосбрасываемый

    логическое значение

    Хром 54+

    Может ли браузер автоматически удалять вкладку при нехватке ресурсов.

  • выброшенный

    логическое значение

    Хром 54+

    Будет ли вкладка удалена. Отброшенная вкладка — это вкладка, содержимое которой было выгружено из памяти, но все еще отображается в полосе вкладок. Его содержимое перезагружается при следующей активации.

  • favIconUrl

    строка необязательна

    URL-адрес значка вкладки. Это свойство присутствует только в том случае, если манифест расширения включает разрешение "tabs" . Это также может быть пустая строка, если вкладка загружается.

  • замороженный

    логическое значение

    В ожидании

    Заморожена ли вкладка. Замороженная вкладка не может выполнять задачи, включая обработчики событий или таймеры. Он виден на панели вкладок, и его содержимое загружается в память. Он размораживается при активации.

  • идентификатор группы

    число

    Хром 88+

    Идентификатор группы, к которой принадлежит вкладка.

  • высота

    номер необязательно

    Высота вкладки в пикселях.

  • выделено

    логическое значение

    Подсвечивается ли вкладка.

  • идентификатор

    номер необязательно

    Идентификатор вкладки. Идентификаторы вкладок уникальны в рамках сеанса браузера. В некоторых случаях вкладке может не быть присвоен идентификатор; например, при запросе внешних вкладок с использованием API sessions , в этом случае может присутствовать идентификатор сеанса. Идентификатор вкладки также можно установить на chrome.tabs.TAB_ID_NONE для окон приложений и инструментов разработчика.

  • инкогнито

    логическое значение

    Находится ли вкладка в окне инкогнито.

  • индекс

    число

    Отсчитываемый от нуля индекс вкладки в ее окне.

  • последний доступ

    число

    Хром 121+

    Последний раз, когда к вкладке обращались, указывается количество миллисекунд с момента начала.

  • mutedInfo

    MutedInfo необязательно

    Хром 46+

    Состояние отключения звука вкладки и причина последнего изменения состояния.

  • openTabId

    номер необязательно

    Идентификатор вкладки, открывшей эту вкладку, если таковая имеется. Это свойство присутствует только в том случае, если вкладка открытия все еще существует.

  • ожидающий URL

    строка необязательна

    Хром 79+

    URL-адрес, по которому переходит вкладка, до фиксации. Это свойство присутствует только в том случае, если манифест расширения включает разрешение "tabs" и имеется ожидающая навигация.

  • закрепленный

    логическое значение

    Закреплена ли вкладка.

  • выбрано

    логическое значение

    Устарело

    Пожалуйста, используйте tabs.Tab.highlighted .

    Выбрана ли вкладка.

  • идентификатор сеанса

    строка необязательна

    Идентификатор сеанса, используемый для уникальной идентификации вкладки, полученный из API sessions .

  • статус

    TabStatus необязательно

    Статус загрузки вкладки.

  • заголовок

    строка необязательна

    Название вкладки. Это свойство присутствует только в том случае, если манифест расширения включает разрешение "tabs" .

  • URL

    строка необязательна

    Последний зафиксированный URL-адрес основного фрейма вкладки. Это свойство присутствует только в том случае, если манифест расширения включает разрешение "tabs" и может быть пустой строкой, если вкладка еще не зафиксирована. См. также Tab.pendingUrl .

  • ширина

    номер необязательно

    Ширина вкладки в пикселях.

  • идентификатор окна

    число

    Идентификатор окна, содержащего вкладку.

TabStatus

Хром 44+

Статус загрузки вкладки.

Перечисление

"разгружен"

"загрузка"

"полный"

WindowType

Хром 44+

Тип окна.

Перечисление

"нормальный"

"неожиданно возникнуть"

"панель"

"приложение"

"инструменты разработчика"

ZoomSettings

Определяет, как обрабатываются изменения масштаба на вкладке и в какой области.

Характеристики

  • по умолчаниюZoomFactor

    номер необязательно

    Хром 43+

    Используется для возврата уровня масштабирования по умолчанию для текущей вкладки при вызовах tabs.getZoomSettings.

  • режим

    Режим ZoomSettingsMode необязательно

    Определяет, как обрабатываются изменения масштаба, т. е. какой объект отвечает за фактическое масштабирование страницы; по умолчанию установлено automatic .

  • объем

    ZoomSettingsScope необязательно

    Определяет, сохраняются ли изменения масштаба для исходной страницы или вступают в силу только на этой вкладке; по умолчанию используется для per-origin в automatic режиме и per-tab в противном случае.

ZoomSettingsMode

Хром 44+

Определяет, как обрабатываются изменения масштаба, т. е. какой объект отвечает за фактическое масштабирование страницы; по умолчанию установлено automatic .

Перечисление

"автоматический"
Изменения масштаба автоматически обрабатываются браузером.

"руководство"
Переопределяет автоматическую обработку изменений масштаба. Событие onZoomChange по-прежнему будет отправлено, и расширение обязано прослушивать это событие и масштабировать страницу вручную. Этот режим не поддерживает масштабирование per-origin и, следовательно, игнорирует настройку масштабирования scope и предполагает индивидуальное масштабирование per-tab .

"неполноценный"
Отключает любое масштабирование на вкладке. Вкладка возвращается к уровню масштабирования по умолчанию, и все попытки изменения масштаба игнорируются.

ZoomSettingsScope

Хром 44+

Определяет, сохраняются ли изменения масштаба для исходной страницы или вступают в силу только на этой вкладке; по умолчанию используется для per-origin в automatic режиме и per-tab в противном случае.

Перечисление

"для каждого происхождения"
Изменения масштаба сохраняются в исходной точке увеличенной страницы, т. е. все остальные вкладки, перемещенные в ту же исходную точку, также масштабируются. Более того, изменения масштаба per-origin сохраняются вместе с источником, а это означает, что при переходе к другим страницам в том же источнике все они масштабируются до одного и того же коэффициента масштабирования. Область per-origin доступна только в automatic режиме.

"для каждой вкладки"
Изменения масштаба вступают в силу только на этой вкладке, а изменения масштаба на других вкладках не влияют на масштабирование этой вкладки. Кроме того, изменения масштаба per-tab сбрасываются при навигации; при навигации по вкладке страницы всегда загружаются с коэффициентами масштабирования per-origin .

Характеристики

MAX_CAPTURE_VISIBLE_TAB_CALLS_PER_SECOND

Хром 92+

Максимальное количество вызовов captureVisibleTab в секунду. captureVisibleTab требует больших затрат, и его не следует вызывать слишком часто.

Ценить

2

TAB_ID_NONE

Хром 46+

Идентификатор, обозначающий отсутствие вкладки браузера.

Ценить

-1

TAB_INDEX_NONE

Хром 123+

Индекс, обозначающий отсутствие индекса табуляции в tab_strip.

Ценить

-1

Методы

captureVisibleTab()

Обещать
chrome.tabs.captureVisibleTab(
  windowId?: number,
  options?: ImageDetails,
  callback?: function,
)

Захватывает видимую область активной в настоящий момент вкладки в указанном окне. Чтобы вызвать этот метод, расширение должно иметь либо разрешение <all_urls> , либо разрешение activeTab . Помимо сайтов, к которым расширения обычно имеют доступ, этот метод позволяет расширениям захватывать конфиденциальные сайты, доступ к которым в противном случае ограничен, включая страницы chrome:-scheme, страницы других расширений и URL-адреса data:. Эти конфиденциальные сайты можно захватить только с разрешением activeTab. URL-адреса файлов могут быть записаны только в том случае, если расширению предоставлен доступ к файлу.

Параметры

  • идентификатор окна

    номер необязательно

    Целевое окно. По умолчанию используется текущее окно .

  • параметры

    Детали изображения необязательно

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (dataUrl: string) => void

    • URL-адрес данных

      нить

      URL-адрес данных, который кодирует изображение видимой области захваченной вкладки. Может быть назначен свойству 'src' элемента HTML img для отображения.

Возврат

  • Обещание<строка>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

connect()

chrome.tabs.connect(
  tabId: number,
  connectInfo?: object,
)

Подключается к сценариям содержимого на указанной вкладке. Событие runtime.onConnect запускается в каждом сценарии содержимого, выполняющемся на указанной вкладке для текущего расширения. Дополнительные сведения см. в разделе «Обмен сообщениями сценариев содержимого» .

Параметры

  • идентификатор табуляции

    число

  • ConnectInfo

    объект необязательный

    • идентификатор документа

      строка необязательна

      Хром 106+

      Откройте порт для конкретного документа, идентифицируемого documentId а не для всех кадров на вкладке.

    • идентификатор кадра

      номер необязательно

      Откройте порт для определенного кадра, определенного идентификатором frameId а не для всех кадров на вкладке.

    • имя

      строка необязательна

      Передается в onConnect для сценариев содержимого, которые прослушивают событие подключения.

Возврат

  • Порт, который можно использовать для связи со сценариями содержимого, работающими на указанной вкладке. Событие runtime.Port для порта запускается, если вкладка закрывается или не существует.

create()

Обещать
chrome.tabs.create(
  createProperties: object,
  callback?: function,
)

Создает новую вкладку.

Параметры

  • создать свойства

    объект

    • активный

      логическое значение необязательно

      Должна ли вкладка стать активной вкладкой в ​​окне. Не влияет на то, находится ли окно в фокусе (см. windows.update ). По умолчанию true .

    • индекс

      номер необязательно

      Положение, которое должна занимать вкладка в окне. Предоставленное значение ограничивается значением между нулем и количеством вкладок в окне.

    • openTabId

      номер необязательно

      Идентификатор вкладки, которая открыла эту вкладку. Если указано, вкладка открытия должна находиться в том же окне, что и вновь созданная вкладка.

    • закрепленный

      логическое значение необязательно

      Должна ли быть закреплена вкладка. По умолчанию false

    • выбрано

      логическое значение необязательно

      Устарело

      Пожалуйста, используйте активный .

      Должна ли вкладка стать выбранной вкладкой в ​​окне. По умолчанию true

    • URL

      строка необязательна

      URL-адрес для первоначального перехода на вкладку. Полные URL-адреса должны включать схему (т. е. «http://www.google.com», а не «www.google.com»). Относительные URL-адреса относятся к текущей странице расширения. По умолчанию используется страница новой вкладки.

    • идентификатор окна

      номер необязательно

      Окно, в котором создается новая вкладка. По умолчанию используется текущее окно .

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tab: Tab) => void

Возврат

  • Обещание< Вкладка >

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

detectLanguage()

Обещать
chrome.tabs.detectLanguage(
  tabId?: number,
  callback?: function,
)

Определяет основной язык содержимого на вкладке.

Параметры

  • идентификатор табуляции

    номер необязательно

    По умолчанию активная вкладка текущего окна .

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (language: string) => void

    • язык

      нить

      Код языка ISO, например en или fr . Полный список языков, поддерживаемых этим методом, см. в разделе kLanguageInfoTable . Проверяются столбцы со второго по четвертый, и возвращается первое значение, отличное от NULL, за исключением упрощенного китайского языка, для которого возвращается zh-CN . Для неизвестного/неопределенного языка возвращается und .

Возврат

  • Обещание<строка>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

discard()

Обещание Chrome 54+
chrome.tabs.discard(
  tabId?: number,
  callback?: function,
)

Удаляет вкладку из памяти. Удаленные вкладки по-прежнему видны на полосе вкладок и перезагружаются при активации.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки, которую нужно удалить. Если указано, вкладка удаляется, если только она не активна или уже удалена. Если этот параметр опущен, браузер отбрасывает наименее важную вкладку. Это может привести к сбою, если не существует удаляемых вкладок.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tab?: Tab) => void

    • вкладка

      Вкладка необязательна

      Отброшенная вкладка, если она была успешно удалена; в противном случае не определено.

Возврат

  • Обещание< Вкладка | не определено>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

duplicate()

Обещать
chrome.tabs.duplicate(
  tabId: number,
  callback?: function,
)

Дублирует вкладку.

Параметры

  • идентификатор табуляции

    число

    Идентификатор вкладки, которую требуется дублировать.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tab?: Tab) => void

    • вкладка

      Вкладка необязательно

      Подробности о дублированной вкладке. Объект tabs.Tab не содержит url , pendingUrl , title и favIconUrl , если разрешение "tabs" не запрошено.

Возврат

  • Обещание< Вкладка | не определено>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

executeScript()

Promise ≤ MV2 устарел с Chrome 91
chrome.tabs.executeScript(
  tabId?: number,
  details: InjectDetails,
  callback?: function,
)

Заменен на scripting.executeScript в манифесте V3.

Внедряет код JavaScript на страницу. Подробности см. в разделе программного внедрения документа по сценариям контента.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки, в которой нужно запустить скрипт; по умолчанию — активная вкладка текущего окна.

  • подробности

    Подробности сценария для запуска. Должен быть установлен либо код, либо свойство файла, но оба параметра не могут быть установлены одновременно.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (result?: any[]) => void

    • результат

      любой[] необязательно

      Результат скрипта в каждом внедренном кадре.

Возврат

  • Обещание<любое[] | не определено>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

get()

Обещать
chrome.tabs.get(
  tabId: number,
  callback?: function,
)

Получает сведения об указанной вкладке.

Параметры

  • идентификатор табуляции

    число

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tab: Tab) => void

Возврат

  • Обещание< Вкладка >

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getAllInWindow()

Обещание ≤ MV2 устарело
chrome.tabs.getAllInWindow(
  windowId?: number,
  callback?: function,
)

Пожалуйста, используйте tabs.query {windowId: windowId} .

Получает сведения обо всех вкладках в указанном окне.

Параметры

  • идентификатор окна

    номер необязательно

    По умолчанию используется текущее окно .

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tabs: Tab[]) => void

Возврат

  • Обещание< Tab []>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getCurrent()

Обещать
chrome.tabs.getCurrent(
  callback?: function,
)

Получает вкладку, из которой выполняется вызов этого сценария. Возвращает undefined , если вызывается из контекста, отличного от вкладок (например, фоновой страницы или всплывающего окна).

Параметры

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tab?: Tab) => void

Возврат

  • Обещание< Вкладка | не определено>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getSelected()

Обещание ≤ MV2 устарело
chrome.tabs.getSelected(
  windowId?: number,
  callback?: function,
)

Пожалуйста, используйте tabs.query {active: true} .

Получает вкладку, выбранную в указанном окне.

Параметры

  • идентификатор окна

    номер необязательно

    По умолчанию используется текущее окно .

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tab: Tab) => void

Возврат

  • Обещание< Вкладка >

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getZoom()

Обещать
chrome.tabs.getZoom(
  tabId?: number,
  callback?: function,
)

Получает текущий коэффициент масштабирования указанной вкладки.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки, из которой нужно получить текущий коэффициент масштабирования; по умолчанию — активная вкладка текущего окна.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (zoomFactor: number) => void

    • ZoomFactor

      число

      Текущий коэффициент масштабирования вкладки.

Возврат

  • Обещание<число>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

getZoomSettings()

Обещать
chrome.tabs.getZoomSettings(
  tabId?: number,
  callback?: function,
)

Получает текущие настройки масштабирования указанной вкладки.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки, из которой нужно получить текущие настройки масштабирования; по умолчанию — активная вкладка текущего окна.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (zoomSettings: ZoomSettings) => void

Возврат

  • Обещание < ZoomSettings >

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

goBack()

Обещание Chrome 72+
chrome.tabs.goBack(
  tabId?: number,
  callback?: function,
)

Вернитесь на предыдущую страницу, если она доступна.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки для перехода назад; по умолчанию — выбранная вкладка текущего окна.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

goForward()

Обещание Chrome 72+
chrome.tabs.goForward(
  tabId?: number,
  callback?: function,
)

Перейдите на следующую страницу, если она доступна.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки для перехода вперед; по умолчанию — выбранная вкладка текущего окна.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

group()

Обещание Chrome 88+
chrome.tabs.group(
  options: object,
  callback?: function,
)

Добавляет одну или несколько вкладок в указанную группу или, если группа не указана, добавляет данные вкладки во вновь созданную группу.

Параметры

  • параметры

    объект

    • создать свойства

      объект необязательный

      Конфигурации для создания группы. Невозможно использовать, если groupId уже указан.

      • идентификатор окна

        номер необязательно

        Окно новой группы. По умолчанию используется текущее окно.

    • идентификатор группы

      номер необязательно

      Идентификатор группы, в которую нужно добавить вкладки. Если не указано, будет создана новая группа.

    • tabIds

      номер | [число, ...число[]]

      Идентификатор вкладки или список идентификаторов вкладок, которые нужно добавить в указанную группу.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (groupId: number) => void

    • идентификатор группы

      число

      Идентификатор группы, в которую были добавлены вкладки.

Возврат

  • Обещание<число>

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

highlight()

Обещать
chrome.tabs.highlight(
  highlightInfo: object,
  callback?: function,
)

Выделяет данные вкладки и фокусируется на первой из группы. Будет казаться, что ничего не происходит, если указанная вкладка в данный момент активна.

Параметры

  • ВыделитеИнформацию

    объект

    • вкладки

      номер | число[]

      Один или несколько индексов вкладок, которые нужно выделить.

    • идентификатор окна

      номер необязательно

      Окно, содержащее вкладки.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (window: Window) => void

    • окно

      Содержит сведения об окне, вкладки которого были выделены.

Возврат

  • Обещание < windows.Window >

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

insertCSS()

Promise ≤ MV2 устарел с Chrome 91
chrome.tabs.insertCSS(
  tabId?: number,
  details: InjectDetails,
  callback?: function,
)

Заменено scripting.insertCSS в манифесте V3.

Внедряет CSS на страницу. Стили, вставленные с помощью этого метода, можно удалить с помощью scripting.removeCSS . Подробности см. в разделе программного внедрения документа по сценариям контента.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки, в которую нужно вставить CSS; по умолчанию — активная вкладка текущего окна.

  • подробности

    Подробности текста CSS для вставки. Должен быть установлен либо код, либо свойство файла, но оба параметра не могут быть установлены одновременно.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

move()

Обещать
chrome.tabs.move(
  tabIds: number | number[],
  moveProperties: object,
  callback?: function,
)

Перемещает одну или несколько вкладок на новую позицию в пределах окна или в новое окно. Обратите внимание, что вкладки можно перемещать только в обычные (window.type === "normal") окна и обратно.

Параметры

  • tabIds

    номер | число[]

    Идентификатор вкладки или список идентификаторов вкладок, которые нужно переместить.

  • перемещениеСвойства

    объект

    • индекс

      число

      Позиция, в которую нужно переместить окно. Используйте -1 , чтобы разместить вкладку в конце окна.

    • идентификатор окна

      номер необязательно

      По умолчанию это окно, в котором в данный момент находится вкладка.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tabs: Tab | Tab[]) => void

Возврат

  • Обещание< Вкладка | Вкладка []>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

query()

Обещать
chrome.tabs.query(
  queryInfo: object,
  callback?: function,
)

Получает все вкладки с указанными свойствами или все вкладки, если свойства не указаны.

Параметры

  • запросИнформация

    объект

    • активный

      логическое значение необязательно

      Активны ли вкладки в своих окнах.

    • слышимый

      логическое значение необязательно

      Хром 45+

      Слышны ли вкладки.

    • автосбрасываемый

      логическое значение необязательно

      Хром 54+

      Может ли браузер автоматически удалять вкладки при нехватке ресурсов.

    • текущее окно

      логическое значение необязательно

      Находятся ли вкладки в текущем окне .

    • выброшенный

      логическое значение необязательно

      Хром 54+

      Отбрасываются ли вкладки. Отброшенная вкладка — это вкладка, содержимое которой было выгружено из памяти, но все еще отображается в полосе вкладок. Его содержимое перезагружается при следующей активации.

    • замороженный

      логическое значение необязательно

      В ожидании

      Заморожены ли вкладки. Замороженная вкладка не может выполнять задачи, включая обработчики событий или таймеры. Он виден в полосе вкладок, и его содержимое загружается в память. Он размораживается при активации.

    • идентификатор группы

      номер необязательно

      Хром 88+

      Идентификатор группы, в которой находятся вкладки, или tabGroups.TAB_GROUP_ID_NONE для несгруппированных вкладок.

    • выделено

      логическое значение необязательно

      Подсвечиваются ли вкладки.

    • индекс

      номер необязательно

      Положение вкладок в их окнах.

    • последнееFocusedWindow

      логическое значение необязательно

      Находятся ли вкладки в последнем активном окне.

    • приглушенный

      логическое значение необязательно

      Хром 45+

      Отключены ли на вкладках звук.

    • закрепленный

      логическое значение необязательно

      Закреплены ли вкладки.

    • статус

      TabStatus необязательно

      Статус загрузки вкладки.

    • заголовок

      строка необязательна

      Сопоставьте заголовки страниц с шаблоном. Это свойство игнорируется, если у расширения нет разрешения "tabs" .

    • URL

      строка | строка[] необязательно

      Сопоставьте вкладки с одним или несколькими шаблонами URL-адресов . Идентификаторы фрагментов не совпадают. Это свойство игнорируется, если у расширения нет разрешения "tabs" .

    • идентификатор окна

      номер необязательно

      Идентификатор родительского окна или windows.WINDOW_ID_CURRENT для текущего окна .

    • тип окна

      Тип окна необязательно

      Тип окна, в котором находятся вкладки.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (result: Tab[]) => void

Возврат

  • Обещание< Tab []>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

reload()

Обещать
chrome.tabs.reload(
  tabId?: number,
  reloadProperties?: object,
  callback?: function,
)

Перезагрузите вкладку.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки для перезагрузки; по умолчанию — выбранная вкладка текущего окна.

  • перезагрузитьСвойства

    объект необязательный

    • обход кэша

      логическое значение необязательно

      Обходить ли локальное кэширование. По умолчанию установлено значение false .

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

remove()

Обещать
chrome.tabs.remove(
  tabIds: number | number[],
  callback?: function,
)

Закрывает одну или несколько вкладок.

Параметры

  • tabIds

    номер | число[]

    Идентификатор вкладки или список идентификаторов вкладок, которые нужно закрыть.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

removeCSS()

Promise Chrome 87+ ≤ MV2 устарел с Chrome 91
chrome.tabs.removeCSS(
  tabId?: number,
  details: DeleteInjectionDetails,
  callback?: function,
)

Заменено на scripting.removeCSS в Manifest V3.

Удаляет со страницы CSS, который ранее был добавлен вызовом scripting.insertCSS .

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки, из которой нужно удалить CSS; по умолчанию — активная вкладка текущего окна.

  • Подробности текста CSS, который нужно удалить. Должен быть установлен либо код, либо свойство файла, но оба параметра не могут быть установлены одновременно.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

sendMessage()

Обещать
chrome.tabs.sendMessage(
  tabId: number,
  message: any,
  options?: object,
  callback?: function,
)

Отправляет одно сообщение в сценарии содержимого на указанной вкладке с дополнительным обратным вызовом, который будет запускаться при отправке ответа. Событие runtime.onMessage запускается в каждом сценарии содержимого, выполняющемся на указанной вкладке для текущего расширения.

Параметры

  • идентификатор табуляции

    число

  • сообщение

    любой

    Сообщение для отправки. Это сообщение должно быть объектом, поддерживающим формат JSON.

  • параметры

    объект необязательный

    • идентификатор документа

      строка необязательна

      Хром 106+

      Отправьте сообщение конкретному документу, определенному documentId а не всем кадрам на вкладке.

    • идентификатор кадра

      номер необязательно

      Отправьте сообщение конкретному кадру, указанному в frameId а не всем кадрам на вкладке.

  • перезвонить

    функция необязательна

    Хром 99+

    Параметр callback выглядит так:

    (response: any) => void

    • ответ

      любой

      Объект ответа JSON, отправленный обработчиком сообщения. Если при подключении к указанной вкладке возникает ошибка, обратный вызов вызывается без аргументов, а runtime.lastError устанавливается сообщение об ошибке.

Возврат

  • Обещание <любое>

    Хром 99+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

sendRequest()

Обещание ≤ MV2 устарело
chrome.tabs.sendRequest(
  tabId: number,
  request: any,
  callback?: function,
)

Пожалуйста, используйте runtime.sendMessage .

Отправляет один запрос к сценариям содержимого на указанной вкладке с дополнительным обратным вызовом, который выполняется при отправке ответа. Событие extension.onRequest запускается в каждом сценарии содержимого, выполняющемся на указанной вкладке для текущего расширения.

Параметры

  • идентификатор табуляции

    число

  • запрос

    любой

  • перезвонить

    функция необязательна

    Хром 99+

    Параметр callback выглядит так:

    (response: any) => void

    • ответ

      любой

      Объект ответа JSON, отправленный обработчиком запроса. Если при подключении к указанной вкладке возникает ошибка, обратный вызов вызывается без аргументов, а runtime.lastError устанавливается сообщение об ошибке.

Возврат

  • Обещание <любое>

    Хром 99+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

setZoom()

Обещать
chrome.tabs.setZoom(
  tabId?: number,
  zoomFactor: number,
  callback?: function,
)

Масштабирует указанную вкладку.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки для масштабирования; по умолчанию — активная вкладка текущего окна.

  • ZoomFactor

    число

    Новый коэффициент масштабирования. Значение 0 устанавливает для вкладки текущий коэффициент масштабирования по умолчанию. Значения больше 0 задают коэффициент масштабирования (возможно, не по умолчанию) для вкладки.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

setZoomSettings()

Обещать
chrome.tabs.setZoomSettings(
  tabId?: number,
  zoomSettings: ZoomSettings,
  callback?: function,
)

Устанавливает параметры масштабирования для указанной вкладки, которые определяют, как обрабатываются изменения масштаба. Эти настройки сбрасываются до значений по умолчанию при переходе по вкладке.

Параметры

  • идентификатор табуляции

    номер необязательно

    Идентификатор вкладки, для которой необходимо изменить параметры масштабирования; по умолчанию — активная вкладка текущего окна.

  • Определяет, как обрабатываются изменения масштаба и в какой области.

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

ungroup()

Обещание Chrome 88+
chrome.tabs.ungroup(
  tabIds: number | [number, ...number[]],
  callback?: function,
)

Удаляет одну или несколько вкладок из соответствующих групп. Если какие-либо группы становятся пустыми, они удаляются.

Параметры

  • tabIds

    номер | [число, ...число[]]

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

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    () => void

Возврат

  • Обещание<void>

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

update()

Обещать
chrome.tabs.update(
  tabId?: number,
  updateProperties: object,
  callback?: function,
)

Изменяет свойства вкладки. Свойства, не указанные в updateProperties не изменяются.

Параметры

  • идентификатор табуляции

    номер необязательно

    По умолчанию выбрана вкладка текущего окна .

  • ОбновлениеСвойства

    объект

    • активный

      логическое значение необязательно

      Должна ли вкладка быть активной. Не влияет на то, находится ли окно в фокусе (см. windows.update ).

    • автосбрасываемый

      логическое значение необязательно

      Хром 54+

      Должна ли вкладка автоматически удаляться браузером при нехватке ресурсов.

    • выделено

      логическое значение необязательно

      Добавляет или удаляет вкладку из текущего выбора.

    • приглушенный

      логическое значение необязательно

      Хром 45+

      Должен ли звук на вкладке быть отключен.

    • openTabId

      номер необязательно

      Идентификатор вкладки, которая открыла эту вкладку. Если указано, вкладка открытия должна находиться в том же окне, что и эта вкладка.

    • закрепленный

      логическое значение необязательно

      Должна ли быть закреплена вкладка.

    • выбрано

      логическое значение необязательно

      Устарело

      Пожалуйста, используйте выделенный .

      Следует ли выбирать вкладку.

    • URL

      строка необязательна

      URL-адрес для перехода по вкладке. URL-адреса JavaScript не поддерживаются; вместо этого используйте scripting.executeScript .

  • перезвонить

    функция необязательна

    Параметр callback выглядит так:

    (tab?: Tab) => void

    • вкладка

      Вкладка необязательна

      Подробности об обновленной вкладке. Объект tabs.Tab не содержит url , pendingUrl , title и favIconUrl , если разрешение "tabs" не запрошено.

Возврат

  • Обещание< Вкладка | не определено>

    Хром 88+

    Промисы поддерживаются только для Manifest V3 и более поздних версий, на других платформах необходимо использовать обратные вызовы.

События

onActivated

chrome.tabs.onActivated.addListener(
  callback: function,
)

Срабатывает при изменении активной вкладки в окне. Обратите внимание, что URL-адрес вкладки может не быть установлен во время запуска этого события, но вы можете прослушивать события onUpdated, чтобы получать уведомления, когда URL-адрес установлен.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (activeInfo: object) => void

    • активинфо

      объект

      • идентификатор табуляции

        число

        Идентификатор вкладки, которая стала активной.

      • идентификатор окна

        число

        Идентификатор окна, внутри которого изменилась активная вкладка.

onActiveChanged

≤ MV2 устарел
chrome.tabs.onActiveChanged.addListener(
  callback: function,
)

Пожалуйста, используйте tabs.onActivated .

Срабатывает при изменении выбранной вкладки в окне. Обратите внимание, что URL-адрес вкладки может не быть установлен во время запуска этого события, но вы можете прослушивать события tabs.onUpdated , чтобы получать уведомления, когда URL-адрес установлен.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tabId: number, selectInfo: object) => void

    • идентификатор табуляции

      число

    • выберитеИнформация

      объект

      • идентификатор окна

        число

        Идентификатор окна, внутри которого изменилась выбранная вкладка.

onAttached

chrome.tabs.onAttached.addListener(
  callback: function,
)

Вызывается, когда к окну прикреплена вкладка; например, потому что он был перемещен между окнами.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tabId: number, attachInfo: object) => void

    • идентификатор табуляции

      число

    • AttachInfo

      объект

      • новая позиция

        число

      • новыйWindowId

        число

onCreated

chrome.tabs.onCreated.addListener(
  callback: function,
)

Вызывается при создании вкладки. Обратите внимание, что URL-адрес вкладки и членство в группе вкладок могут быть не установлены во время запуска этого события, но вы можете прослушивать события onUpdated, чтобы получать уведомления, когда URL-адрес установлен или вкладка добавляется в группу вкладок.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tab: Tab) => void

onDetached

chrome.tabs.onDetached.addListener(
  callback: function,
)

Вызывается, когда вкладка отделена от окна; например, потому что он был перемещен между окнами.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tabId: number, detachInfo: object) => void

    • идентификатор табуляции

      число

    • отсоединитьинформацию

      объект

      • старая позиция

        число

      • старыйWindowId

        число

onHighlightChanged

≤ MV2 устарел
chrome.tabs.onHighlightChanged.addListener(
  callback: function,
)

Пожалуйста, используйте tabs.onHighlighted .

Вызывается при изменении выделенных или выбранных вкладок в окне.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (selectInfo: object) => void

    • выберитеИнформация

      объект

      • tabIds

        число[]

        Все выделенные вкладки в окне.

      • идентификатор окна

        число

        Окно, вкладки которого менялись.

onHighlighted

chrome.tabs.onHighlighted.addListener(
  callback: function,
)

Вызывается при изменении выделенных или выбранных вкладок в окне.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (highlightInfo: object) => void

    • ВыделитеИнформацию

      объект

      • tabIds

        число[]

        Все выделенные вкладки в окне.

      • идентификатор окна

        число

        Окно, вкладки которого менялись.

onMoved

chrome.tabs.onMoved.addListener(
  callback: function,
)

Вызывается при перемещении вкладки внутри окна. Запускается только одно событие перемещения, представляющее вкладку, которую непосредственно переместил пользователь. События перемещения не запускаются для других вкладок, которые должны перемещаться в ответ на перемещение вкладки вручную. Это событие не вызывается при перемещении вкладки между окнами; подробности см. в tabs.onDetached .

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tabId: number, moveInfo: object) => void

    • идентификатор табуляции

      число

    • moveInfo

      объект

      • отиндекс

        число

      • toIndex

        число

      • идентификатор окна

        число

onRemoved

chrome.tabs.onRemoved.addListener(
  callback: function,
)

Вызывается при закрытии вкладки.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tabId: number, removeInfo: object) => void

    • идентификатор табуляции

      число

    • удалитьинформацию

      объект

      • isWindowClosing

        логическое значение

        Истинно, когда вкладка была закрыта, поскольку ее родительское окно было закрыто.

      • идентификатор окна

        число

        Окно, вкладка которого закрыта.

onReplaced

chrome.tabs.onReplaced.addListener(
  callback: function,
)

Вызывается, когда вкладка заменяется другой вкладкой из-за предварительной отрисовки или мгновенного отображения.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (addedTabId: number, removedTabId: number) => void

    • добавленныйTabId

      число

    • удаленныйTabId

      число

onSelectionChanged

≤ MV2 устарел
chrome.tabs.onSelectionChanged.addListener(
  callback: function,
)

Пожалуйста, используйте tabs.onActivated .

Срабатывает при изменении выбранной вкладки в окне.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tabId: number, selectInfo: object) => void

    • идентификатор табуляции

      число

    • выберитеИнформация

      объект

      • идентификатор окна

        число

        Идентификатор окна, внутри которого изменилась выбранная вкладка.

onUpdated

chrome.tabs.onUpdated.addListener(
  callback: function,
)

Вызывается при обновлении вкладки.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (tabId: number, changeInfo: object, tab: Tab) => void

    • идентификатор табуляции

      число

    • изменениеИнформация

      объект

      • слышимый

        логическое значение необязательно

        Хром 45+

        Новое звуковое состояние вкладки.

      • автосбрасываемый

        логическое значение необязательно

        Хром 54+

        Новое состояние автоматического удаления вкладки.

      • выброшенный

        логическое значение необязательно

        Хром 54+

        Новое отброшенное состояние вкладки.

      • favIconUrl

        строка необязательна

        Новый URL-адрес значка вкладки.

      • замороженный

        логическое значение необязательно

        В ожидании

        Новое замороженное состояние вкладки.

      • идентификатор группы

        номер необязательно

        Хром 88+

        Новая группа вкладки.

      • mutedInfo

        MutedInfo необязательно

        Хром 46+

        Новое отключенное состояние вкладки и причина изменения.

      • закрепленный

        логическое значение необязательно

        Новое закрепленное состояние вкладки.

      • статус

        TabStatus необязательно

        Статус загрузки вкладки.

      • заголовок

        строка необязательна

        Хром 48+

        Новое название вкладки.

      • URL

        строка необязательна

        URL-адрес вкладки, если он изменился.

    • вкладка

onZoomChange

chrome.tabs.onZoomChange.addListener(
  callback: function,
)

Вызывается при масштабировании вкладки.

Параметры

  • перезвонить

    функция

    Параметр callback выглядит так:

    (ZoomChangeInfo: object) => void