Вкладки
Взаимодействие с системой вкладок браузера.
Примечание: При использовании Manifest V3 или более поздней версии, методы выполнения скриптов, вставки CSS и удаления CSS предоставляются API scripting через методы scripting.executeScript(), scripting.insertCSS() и scripting.removeCSS().
Вы можете использовать этот API для получения списка открытых вкладок, отфильтрованных по различным критериям, а также для открытия, обновления, перемещения, перезагрузки и удаления вкладок. Прямой доступ к содержимому, размещённому в вкладках, с помощью этого API недоступен, но вы можете вставлять JavaScript и CSS в вкладки, используя API tabs.executeScript() или tabs.insertCSS().
Вы можете использовать большую часть этого API без специальных разрешений. Однако:
- Для доступа к
Tab.url,Tab.title, иTab.favIconUrl(или для фильтрации по этим свойствам черезtabs.query()), вам необходимо иметь разрешение"tabs"permission, или иметь разрешения на хостинг, которые соответствуютTab.url.- Доступ к этим свойствам через разрешения на хостинг поддерживается с Firefox 86 и Chrome 50. В Firefox 85 и ранее вместо этого требовалось разрешение "tabs".
- Для использования
tabs.executeScript()илиtabs.insertCSS(), вы должны иметь разрешение на хостинг host permission для вкладки.
В качестве альтернативы, вы можете временно получить эти разрешения, только для текущей активной вкладки и только в ответ на явное действие пользователя, запросив разрешение "activeTab".
Многие операции с вкладками используют идентификатор вкладки id. Идентификаторы вкладок id гарантированно уникальны для каждой вкладки только в рамках одной сессии браузера. Если браузер перезапускается, он может и будет повторно использовать идентификаторы вкладок id. Для ассоциации информации с вкладкой при перезапуске браузера используйте sessions.setTabValue().
Типы
tabs.MutedInfoReason-
Указывает причину приглушения или отключения звука вкладки.
tabs.MutedInfo-
Этот объект содержит логическое значение, указывающее, приглушена ли вкладка, и причину последнего изменения состояния.
tabs.PageSettings-
Используется для управления тем, как вкладка отображается как PDF методом
tabs.saveAsPDF(). tabs.Tab-
Этот тип содержит информацию о вкладке.
tabs.TabStatus-
Указывает, загрузилась ли вкладка.
tabs.WindowType-
Тип окна, содержащего данную вкладку.
tabs.ZoomSettingsMode-
Определяет, обрабатываются ли изменения масштаба браузером, расширением или отключены.
tabs.ZoomSettingsScope-
Определяет, будут ли изменения масштаба сохраняться для источника страницы или действовать только в данной вкладке.
tabs.ZoomSettings-
Определяет настройки масштаба
mode,scopeи коэффициент масштаба по умолчанию.
Свойства
tabs.TAB_ID_NONE-
Специальное значение ID, присваиваемое вкладкам, которые не являются вкладками браузера (например, вкладкам в окнах разработчика).
Функции
tabs.captureTab()-
Создает данные URL, кодируя изображение видимой области данной вкладки.
tabs.captureVisibleTab()-
Создает данные URL, кодируя изображение видимой области текущей активной вкладки в указанном окне.
tabs.connect()-
Устанавливает соединение для обмена сообщениями между фоновыми скриптами расширения (или другими привилегированными скриптами, такими как скрипты всплывающих окон или скрипты страниц настроек) и любыми скриптами содержимого, выполняемыми в указанной вкладке.
tabs.create()-
Создаёт новую вкладку.
tabs.detectLanguage()-
Определяет основной язык содержимого вкладки.
tabs.discard()-
Удаляет одну или несколько вкладок.
tabs.duplicate()-
Создаёт дубликат вкладки.
-
tabs.executeScript()(только для Manifest V2) -
Вставляет JavaScript-код в страницу.
tabs.get()-
Получает подробную информацию об указанной вкладке.
-
tabs.getAllInWindow()Устаревший -
Получает подробную информацию обо всех вкладках в указанном окне.
tabs.getCurrent()-
Получает информацию о вкладке, в которой выполняется этот скрипт, в виде объекта
tabs.Tab. -
tabs.getSelected()Устаревший -
Получает выбранную вкладку в указанном окне. Устарело: используйте
tabs.query({active: true})вместо этого. tabs.getZoom()-
Получает текущий коэффициент масштабирования указанной вкладки.
tabs.getZoomSettings()-
Получает текущие настройки масштабирования для указанной вкладки.
tabs.goForward()-
Перейти вперёд к следующей странице, если она доступна.
tabs.goBack()-
Перейти назад к предыдущей странице, если она доступна.
-
tabs.hide()Экспериментальная -
Скрывает одну или несколько вкладок.
tabs.highlight()-
Выделяет одну или несколько вкладок.
-
tabs.insertCSS()(только для Manifest V2) -
Вставляет CSS-код в страницу.
tabs.move()-
Перемещает одну или несколько вкладок в новое положение в том же окне или в другое окно.
tabs.moveInSuccession()-
Изменяет порядок следования группы вкладок.
tabs.print()-
Печать содержимого активной вкладки.
tabs.printPreview()-
Открытие предварительного просмотра печати для активной вкладки.
tabs.query()-
Получает все вкладки, которые соответствуют указанным свойствам, или все вкладки, если свойства не указаны.
tabs.reload()-
Перезагрузить вкладку, возможно, пропустив локальный кэш веб-страницы.
tabs.remove()-
Закрывает одну или несколько вкладок.
-
tabs.removeCSS()(только для Manifest V2) -
Удаляет CSS-код со страницы, который был ранее вставлен с помощью вызова
tabs.insertCSS(). tabs.saveAsPDF()-
Сохраняет текущую страницу в формате PDF.
tabs.sendMessage()-
Отправляет единственное сообщение скриптам содержимого в указанной вкладке.
-
tabs.sendRequest()Устаревший -
Отправляет единственный запрос скриптам содержимого в указанной вкладке. Устарело: используйте
tabs.sendMessage()вместо этого. tabs.setZoom()-
Изменяет масштаб указанной вкладки.
tabs.setZoomSettings()-
Устанавливает настройки масштабирования для указанной вкладки.
-
tabs.show()Экспериментальная -
Отображает одну или несколько вкладок, которые были скрыты с помощью
hidden. tabs.toggleReaderMode()-
Переключает режим чтения для указанной вкладки.
tabs.update()-
Перенаправить вкладку на новый URL или изменить другие свойства вкладки.
tabs.warmup()-
Подготовить вкладку для потенциально более быстрого переключения в дальнейшем.
События
tabs.onActivated-
Срабатывает при изменении активной вкладки в окне. Обратите внимание, что URL вкладки может быть не задан на момент срабатывания этого события.
-
tabs.onActiveChangedУстаревшее -
Срабатывает при изменении выделенной вкладки в окне. Устаревшее: используйте
tabs.onActivatedвместо этого. tabs.onAttached-
Срабатывает при присоединении вкладки к окну, например, при перемещении между окнами.
tabs.onCreated-
Срабатывает при создании вкладки. Обратите внимание, что URL вкладки может быть не задан на момент срабатывания этого события.
tabs.onDetached-
Срабатывает при отсоединении вкладки от окна, например, при перемещении между окнами.
-
tabs.onHighlightChangedУстаревшее -
Срабатывает при изменении выделенной или выбранной вкладки в окне. Устаревшее: используйте
tabs.onHighlightedвместо этого. tabs.onHighlighted-
Срабатывает при изменении выделенной или выбранной вкладки в окне.
tabs.onMoved-
Срабатывает при перемещении вкладки в пределах окна.
tabs.onRemoved-
Срабатывает при закрытии вкладки.
tabs.onReplaced-
Срабатывает, когда вкладка заменяется другой вкладкой из-за предварительной обработки.
-
tabs.onSelectionChangedУстаревшее -
Срабатывает при изменении выбранной вкладки в окне. Устаревшее: используйте
tabs.onActivatedвместо этого. tabs.onUpdated-
Срабатывает при обновлении вкладки.
tabs.onZoomChange-
Срабатывает при изменении масштаба вкладки.
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Internet Explorer | Opera | Safari | WebView Android | Chrome Android | Firefox for Android | Opera Android | Safari на iOS | Samsung Internet | |
MutedInfo |
46 | 79 | 47 | ? | 33 | 14reason и extensionId не будут заполнены. |
? | ? | Нет | ? | Нет | ? |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
MutedInfoReason |
46 | 79 | 47 | ? | 33 | Нет | ? | ? | Нет | ? | Нет | ? |
PageSettings |
Нет | Нет | 56 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
TAB_ID_NONE |
46 | 14 | 45 | ? | 33 | 14 | ? | ? | 54 | ? | 15 | ? |
TabStatus |
5 | 14 | 45 | ? | 15 | 14 | ? | ? | 54 | ? | 15 | ? |
WindowType |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
ZoomSettings |
38 | 79 | 45 | ? | 25 | Нет | ? | ? | Нет | ? | Нет | ? |
ZoomSettingsMode |
38 | 79 | 45 | ? | 25 | Нет | ? | ? | Нет | ? | Нет | ? |
ZoomSettingsScope |
38 | 79 | 45 | ? | 25 | Нет | ? | ? | Нет | ? | Нет | ? |
captureTab |
Нет | Нет | 59 | ? | Нет | Нет | ? | ? | 82 | ? | Нет | ? |
captureVisibleTab |
5По умолчанию формат файла — 'jpeg'. |
15 | 47 | ? | 15По умолчанию формат файла — 'jpeg'. |
14["По умолчанию формат файла — 'jpeg'.", "<all_urls> разрешение является необязательным."] |
? | ? | 54 | ? | 15["По умолчанию формат файла — 'jpeg'.", "<all_urls> разрешение является необязательным."] |
? |
connect |
5 | 79 | 45 | ? | 15 | 14 | ? | ? | 54 | ? | 15 | ? |
create |
5 | 14 | 45 | ? | 15 | 14 | ? | ? | 54 | ? | 15 | ? |
detectLanguage |
5 | 14 | 45 | ? | 15 | 14["Будет возвращатьund (не определённый язык) для ОС ниже 11.", "Идентификатор локали чаще будет включать код страны."] |
? | ? | Нет | ? | 15 | ? |
discard |
54["Принимает только один идентификатор вкладки в качестве параметра, а не массив.", "Аргумент идентификатора вкладки является необязательным: если он опущен, браузер отбрасывает наименее важную вкладку.", "Обработчик получает объектTab, представляющий вкладку, которая была отброшена.", "Вкладки, чей документ содержит обработчик beforeunload, который отображает запрос, будут отброшены."] |
14 | 58 | ? | 41["Принимает только один идентификатор вкладки в качестве параметра, а не массив.", "Аргумент идентификатора вкладки является необязательным: если он опущен, браузер отбрасывает наименее важную вкладку.", "Обработчик получает объектTab, представляющий вкладку, которая была отброшена.", "Вкладки, чей документ содержит обработчик beforeunload, который отображает запрос, будут отброшены."] |
Нет | ? | ? | Нет | ? | Нет | ? |
duplicate |
23 | 79 | 47 | ? | 15 | 14 | ? | ? | Нет | ? | 15 | ? |
executeScript |
5["Расширения не могут впрыскивать скрипты в свои собственные страницы с помощью этого API.", "Доступно только для использования в манифесте версии 2."] |
14Доступно только для использования в манифесте версии 2. |
43["До версии 50 Firefox передавал единственное значение результата в свой обратный вызов, а не массив, если не было установлено 'allFrames'.", "Доступно только для использования в манифесте версии 2."] |
? | 15["Расширения не могут впрыскивать скрипты в свои собственные страницы с помощью этого API.", "Доступно только для использования в манифесте версии 2."] |
14Доступно только для использования в манифесте версии 2. |
? | ? | 54Доступно только для использования в манифесте версии 2. |
? | 15Доступно только для использования в манифесте версии 2. |
? |
get |
5 | 14 | 45 | ? | 15 | 14 | ? | ? | 54 | ? | 15 | ? |
getAllInWindow |
5 | 79 | Нет | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
getCurrent |
6 | 14 | 45 | ? | 15 | 14 | ? | ? | 54 | ? | 15 | ? |
getSelected |
Да | 79 | Нет | ? | Нет | 14 | ? | ? | Нет | ? | 15 | ? |
getZoom |
Да | 79 | 45 | ? | Да | 14 | ? | ? | Нет | ? | 15 | ? |
getZoomSettings |
42 | 79 | 45 | ? | 29 | Нет | ? | ? | Нет | ? | Нет | ? |
goBack |
72 | 79 | 77 | ? | 60 | 14 | ? | ? | 79 | ? | 15 | ? |
goForward |
72 | 79 | 77 | ? | 60 | 14 | ? | ? | 79 | ? | 15 | ? |
hide |
Нет | Нет | 61 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
highlight |
Да | 79 | 63 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
insertCSS |
ДаДоступно только для использования в манифесте V2. |
14Доступно только для использования в манифесте V2. |
47Доступно только для использования в манифесте V2. |
? | ДаДоступно только для использования в манифесте V2. |
14Доступно только для использования в манифесте V2. |
? | ? | 54Доступно только для использования в манифесте V2. |
? | 15Доступно только для использования в манифесте V2. |
? |
move |
Да | 79 | 46 | ? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
moveInSuccession |
Нет | Нет | 65 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
onActivated |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
onActiveChanged |
Да | 79 | Нет | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
onAttached |
Да | 15 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
onCreated |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
onDetached |
Да | 15 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
onHighlightChanged |
Да | 79 | Нет | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
onHighlighted |
Да | 79 | 6345–62Реализовано как псевдоним дляonActivated. |
? | Нет | 14 | ? | ? | 54Реализовано как псевдоним дляonActivated. |
? | 15 | ? |
onMoved |
Да | 79 | 45 | ? | Да | 14 | ? | ? | Нет | ? | 15 | ? |
onRemoved |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
onReplaced |
Да | 79 | Нет | ? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
onSelectionChanged |
Да | 79 | Нет | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
onUpdated |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
onZoomChange |
Да | 79 | 45 | ? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
print |
Нет | Нет | 56 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
printPreview |
Нет | Нет | 56 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
query |
Да | 14Значенияpanel, app, devtools и popup для WindowType не поддерживаются. |
45 | ? | Да | 14Сопоставление по шаблонам поддерживает* и ?. |
? | ? | 54 | ? | 15Сопоставление по шаблонам поддерживает* и ?. |
? |
reload |
Да | 17 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
remove |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
removeCSS |
87Доступно только для использования в манифесте V2. |
87Доступно только для использования в манифесте V2. |
49Доступно только для использования в манифесте V2. |
? | 73Доступно только для использования в манифесте V2. |
14Доступно только для использования в манифесте V2. |
? | ? | 54Доступно только для использования в манифесте V2. |
? | 15Доступно только для использования в манифесте V2. |
? |
saveAsPDF |
Нет | Нет | 8156–81Эта функция не работает на macOS. |
? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
sendMessage |
Да | 14Ответ не отправляется после обновления принимающей вкладки, если отсутствует прослушивательruntime.onMessage. |
45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
sendRequest |
Да | 79 | Нет | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
setZoom |
Да | 79 | 45 | ? | Да | 14 | ? | ? | Нет | ? | 15 | ? |
setZoomSettings |
Да | 79 | Нет | ? | Да | Нет | ? | ? | Нет | ? | Нет | ? |
show |
Нет | Нет | 61 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
toggleReaderMode |
Нет | Нет | 58 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
update |
Да | 14 | 45 | ? | Да | 14 | ? | ? | 54 | ? | 15 | ? |
warmup |
Нет | Нет | 79 | ? | Нет | Нет | ? | ? | Нет | ? | Нет | ? |
Примеры расширений
- annotate-page
- apply-css
- beastify
- bookmark-it
- chill-out
- commands
- context-menu-copy-link-with-types
- contextual-identities
- cookie-bg-picker
- devtools-panels
- find-across-tabs
- firefox-code-search
- history-deleter
- imagify
- list-cookies
- menu-demo
- menu-labelled-open
- menu-remove-element
- open-my-page-button
- permissions
- session-state
- store-collected-images
- tabs-tabs-tabs
Примечание: Этот API основан на API chrome.tabs Chromium. Данная документация взята из tabs.json кода Chromium.
© 2005–2023 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/API/tabs