хром.окна

Описание

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

Разрешения

При запросе объект windows.Window содержит массив объектов tabs.Tab . Необходимо указать разрешение "tabs" в манифесте , если вам нужен доступ к свойствам url , pendingUrl , title или favIconUrl объекта tabs.Tab . Например:

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

Понятия и применение

Текущее окно

Многие функции в системе расширений принимают необязательный аргумент windowId , который по умолчанию равен текущему окну.

Текущее окно — это окно, содержащее код, который в данный момент выполняется. Важно понимать, что оно может отличаться от самого верхнего или сфокусированного окна.

Например, предположим, что расширение создает несколько вкладок или окон из одного HTML-файла, и этот HTML-файл содержит вызов функции tabs.query() . Текущим окном является окно, содержащее страницу, которая выполнила вызов, независимо от того, какое окно находится сверху.

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

Примеры

Чтобы опробовать этот API, установите пример Windows API из репозитория chrome-extension-samples .

Два окна, каждое с одной вкладкой
Два окна, каждое с одной вкладкой.

Типы

CreateType

Chrome 44+

Указывает тип создаваемого окна браузера. Параметр 'panel' устарел и доступен только для существующих расширений, включенных в список разрешенных в Chrome OS.

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

"нормальный"
Указывает, что окно является стандартным.

"неожиданно возникнуть"
Указывает, что окно должно быть всплывающим.

"панель"
Указывает, что окно является панелью.

QueryOptions

Chrome 88+

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

  • заселить

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

    Если значение истинно, объект windows.Window имеет свойство tabs , содержащее список объектов tabs.Tab . Объекты Tab содержат свойства url , pendingUrl , title и favIconUrl только в том случае, если файл манифеста расширения включает разрешение "tabs" .

  • windowTypes

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

    Если задано, возвращаемое значение windows.Window фильтруется в зависимости от его типа. Если не задано, фильтр по умолчанию устанавливается на ['normal', 'popup'] .

Window

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

  • alwaysOnTop

    логический

    Настроено ли отображение окна всегда сверху?

  • сфокусированный

    логический

    Указывает, является ли данное окно в данный момент активным.

  • высота

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

    Высота окна, включая рамку, в пикселях. В некоторых случаях окну может не быть присвоено свойство height ; например, при запросе закрытых окон через API sessions .

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

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

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

  • инкогнито

    логический

    Является ли окно инкогнито.

  • левый

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

    Смещение окна от левого края экрана в пикселях. В некоторых случаях окну может не быть присвоено свойство left ; например, при запросе закрытых окон через API sessions .

  • sessionId

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

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

  • состояние

    WindowState необязателен

    Состояние этого окна браузера.

  • вкладки

    Вкладка [] необязательный

    Массив объектов tabs.Tab , представляющих текущие вкладки в окне.

  • вершина

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

    Смещение окна от верхнего края экрана в пикселях. В некоторых случаях окну может не быть присвоено свойство top ; например, при запросе закрытых окон через API sessions .

  • тип

    WindowType ( необязательно)

    Это окно браузера определенного типа.

  • ширина

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

    Ширина окна, включая рамку, в пикселях. В некоторых случаях окну может не быть присвоено свойство width ; например, при запросе закрытых окон через API sessions .

WindowState

Chrome 44+

Состояние этого окна браузера. В некоторых случаях окну может не быть присвоено свойство state ; например, при запросе закрытых окон через API sessions .

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

"нормальный"
Обычное состояние окна (не свернутое, не развернутое на весь экран).

"минимизированный"
Состояние окна свернуто.

"максимально"
Состояние окна, развернутого на весь экран.

"полноэкранный"
Полноэкранное состояние окна.

WindowType

Chrome 44+

Тип окна браузера. В некоторых случаях окну может не быть присвоено свойство type ; например, при запросе закрытых окон через API sessions .

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

"нормальный"
Обычное окно браузера.

"неожиданно возникнуть"
Всплывающее окно браузера.

"панель"
Устарело в этом API. Окно в стиле панели приложения Chrome. Расширения могут видеть только свои собственные окна-панели.

"приложение"
В этом API этот метод устарел. Окно приложения Chrome. Расширения могут видеть только собственные окна своих приложений.

"инструменты разработчика"
Окно «Инструменты разработчика».

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

WINDOW_ID_CURRENT

Значение windowId, представляющее текущее окно .

Ценить

-2

WINDOW_ID_NONE

Значение windowId, указывающее на отсутствие окна браузера Chrome.

Ценить

-1

Методы

create()

chrome.windows.create(
  createData?: object,
)
: Promise<Window | undefined>

Создает (открывает) новое окно браузера с любыми дополнительными параметрами размера, положения или URL-адресом по умолчанию.

Параметры

  • создатьДанные

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

    • сфокусированный

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

      Если true , открывается активное окно. Если false , открывается неактивное окно.

    • высота

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

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

    • инкогнито

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

      Следует ли открывать новое окно в режиме инкогнито?

    • левый

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

      Количество пикселей, на которое новое окно будет отнесено от левого края экрана. Если не указано, новое окно будет смещено естественным образом относительно последнего сфокусированного окна. Для панелей это значение игнорируется.

    • setSelfAsOpener

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

      Chrome 64+

      Если true , то свойство 'window.opener' вновь созданного окна устанавливается равным имени вызывающего объекта и находится в той же единице связанных контекстов просмотра, что и вызывающий объект.

    • состояние

      WindowState необязателен

      Chrome 44+

      Начальное состояние окна. Состояния minimized , maximized и fullscreen не могут сочетаться с параметрами left , top , width или height .

    • tabId

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

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

    • вершина

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

      Количество пикселей, на которое новое окно будет отнесено от верхнего края экрана. Если не указано, новое окно будет смещено естественным образом относительно последнего сфокусированного окна. Для панелей это значение игнорируется.

    • тип

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

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

    • url

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

      URL-адрес или массив URL-адресов для открытия в виде вкладок в окне. Полные URL-адреса должны включать схему, например, 'http://www.google.com', а не 'www.google.com'. Неполные URL-адреса считаются относительными в рамках расширения. По умолчанию открывается страница новой вкладки.

    • ширина

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

      Ширина нового окна в пикселях, включая рамку. Если не указано, по умолчанию используется естественная ширина.

Возвраты

  • Promise< Window | undefined>

    Chrome 88+

get()

chrome.windows.get(
  windowId: number,
  queryOptions?: QueryOptions,
)
: Promise<Window>

Получает подробную информацию об окне.

Параметры

  • windowId

    число

  • queryOptions

    QueryOptions (необязательно)

    Chrome 88+

Возвраты

getAll()

chrome.windows.getAll(
  queryOptions?: QueryOptions,
)
: Promise<Window[]>

Закрывает все окна.

Параметры

  • queryOptions

    QueryOptions (необязательно)

    Chrome 88+

Возвраты

  • Promise< Window []>

    Chrome 88+

getCurrent()

chrome.windows.getCurrent(
  queryOptions?: QueryOptions,
)
: Promise<Window>

Получает текущее окно .

Параметры

  • queryOptions

    QueryOptions (необязательно)

    Chrome 88+

Возвраты

getLastFocused()

chrome.windows.getLastFocused(
  queryOptions?: QueryOptions,
)
: Promise<Window>

Находит окно, которое было сфокусировано последним — как правило, это окно «сверху».

Параметры

  • queryOptions

    QueryOptions (необязательно)

    Chrome 88+

Возвраты

remove()

chrome.windows.remove(
  windowId: number,
)
: Promise<void>

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

Параметры

  • windowId

    число

Возвраты

  • Обещание<пустота>

    Chrome 88+

update()

chrome.windows.update(
  windowId: number,
  updateInfo: object,
)
: Promise<Window>

Обновляет свойства окна. Укажите только те свойства, которые необходимо изменить; неуказанные свойства остаются без изменений.

Параметры

  • windowId

    число

  • updateInfo

    объект

    • привлекать внимание

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

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

    • сфокусированный

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

      Если true , окно перемещается на передний план; не может сочетаться с состоянием 'свернуто'. Если false , на передний план перемещается следующее окно в порядке z; не может сочетаться с состоянием 'полноэкранный режим' или 'развернуто'.

    • высота

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

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

    • левый

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

      Смещение окна от левого края экрана в пикселях. Для панелей это значение игнорируется.

    • состояние

      WindowState необязателен

      Новое состояние окна. Состояния «свернуто», «развернуто» и «полноэкранный режим» нельзя комбинировать с параметрами «слева», «сверху», «ширина» или «высота».

    • вершина

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

      Смещение окна относительно верхнего края экрана в пикселях. Для панелей это значение игнорируется.

    • ширина

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

      Ширина окна в пикселях, до которой нужно изменить размер. Для панелей это значение игнорируется.

Возвраты

События

onBoundsChanged

Chrome 86+
chrome.windows.onBoundsChanged.addListener(
  callback: function,
)

Событие срабатывает при изменении размера окна; оно отправляется только после подтверждения новых границ, а не при изменениях, происходящих в данный момент.

Параметры

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

    функция

    Параметр callback выглядит следующим образом:

    (window: Window) => void

onCreated

chrome.windows.onCreated.addListener(
  callback: function,
  filters?: object,
)

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

Параметры

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

    функция

    Chrome 46+

    Параметр callback выглядит следующим образом:

    (window: Window) => void

    • окно

      Подробности о созданном окне.

  • фильтры

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

    • windowTypes

      Условия, которым должен удовлетворять создаваемый тип окна. По умолчанию удовлетворяет ['normal', 'popup'] .

onFocusChanged

chrome.windows.onFocusChanged.addListener(
  callback: function,
  filters?: object,
)

Событие срабатывает при смене текущего окна. Возвращает chrome.windows.WINDOW_ID_NONE если все окна Chrome потеряли фокус. Примечание: В некоторых оконных менеджерах Linux WINDOW_ID_NONE всегда отправляется непосредственно перед переключением с одного окна Chrome на другое.

Параметры

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

    функция

    Chrome 46+

    Параметр callback выглядит следующим образом:

    (windowId: number) => void

    • windowId

      число

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

  • фильтры

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

    • windowTypes

      Условия, которым должен удовлетворять удаляемый тип окна. По умолчанию удовлетворяет ['normal', 'popup'] .

onRemoved

chrome.windows.onRemoved.addListener(
  callback: function,
  filters?: object,
)

Срабатывает при снятии (закрытии) окна.

Параметры

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

    функция

    Chrome 46+

    Параметр callback выглядит следующим образом:

    (windowId: number) => void

    • windowId

      число

      Идентификатор удалённого окна.

  • фильтры

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

    • windowTypes

      Условия, которым должен удовлетворять удаляемый тип окна. По умолчанию удовлетворяет ['normal', 'popup'] .