Описание
Используйте 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
Указывает тип создаваемого окна браузера. Параметр 'panel' устарел и доступен только для существующих расширений, включенных в список разрешенных в Chrome OS.
Перечисление
"нормальный" "неожиданно возникнуть" "панель"
Указывает, что окно является стандартным.
Указывает, что окно должно быть всплывающим.
Указывает, что окно является панелью.
QueryOptions
Характеристики
- заселить
логический необязательный
Если значение истинно, объект
windows.Windowимеет свойствоtabs, содержащее список объектовtabs.Tab. ОбъектыTabсодержат свойстваurl,pendingUrl,titleиfavIconUrlтолько в том случае, если файл манифеста расширения включает разрешение"tabs". - windowTypes
WindowType [] необязательный
Если задано, возвращаемое значение
windows.Windowфильтруется в зависимости от его типа. Если не задано, фильтр по умолчанию устанавливается на['normal', 'popup'].
Window
Характеристики
- alwaysOnTop
логический
Настроено ли отображение окна всегда сверху?
- сфокусированный
логический
Указывает, является ли данное окно в данный момент активным.
- высота
число необязательно
Высота окна, включая рамку, в пикселях. В некоторых случаях окну может не быть присвоено свойство
height; например, при запросе закрытых окон через APIsessions. - идентификатор
число необязательно
Идентификатор окна. Идентификаторы окон уникальны в рамках одной сессии браузера. В некоторых случаях окну может не быть присвоено свойство
ID; например, при запросе окон с помощью APIsessions, в этом случае идентификатор сессии может присутствовать. - инкогнито
логический
Является ли окно инкогнито.
- левый
число необязательно
Смещение окна от левого края экрана в пикселях. В некоторых случаях окну может не быть присвоено свойство
left; например, при запросе закрытых окон через APIsessions. - sessionId
строка необязательный
Идентификатор сессии, используемый для однозначной идентификации окна, получается из API
sessions. - состояние
WindowState необязателен
Состояние этого окна браузера.
- вкладки
Вкладка [] необязательный
Массив объектов
tabs.Tab, представляющих текущие вкладки в окне. - вершина
число необязательно
Смещение окна от верхнего края экрана в пикселях. В некоторых случаях окну может не быть присвоено свойство
top; например, при запросе закрытых окон через APIsessions. - тип
WindowType ( необязательно)
Это окно браузера определенного типа.
- ширина
число необязательно
Ширина окна, включая рамку, в пикселях. В некоторых случаях окну может не быть присвоено свойство
width; например, при запросе закрытых окон через APIsessions.
WindowState
Состояние этого окна браузера. В некоторых случаях окну может не быть присвоено свойство state ; например, при запросе закрытых окон через API sessions .
Перечисление
"нормальный" "минимизированный" "максимально" "полноэкранный"
Обычное состояние окна (не свернутое, не развернутое на весь экран).
Состояние окна свернуто.
Состояние окна, развернутого на весь экран.
Полноэкранное состояние окна.
WindowType
Тип окна браузера. В некоторых случаях окну может не быть присвоено свойство 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+
Возвраты
Promise< Window >
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+
Возвраты
Promise< Window >
Chrome 88+
getLastFocused()
chrome.windows.getLastFocused(
queryOptions?: QueryOptions,
): Promise<Window>
Находит окно, которое было сфокусировано последним — как правило, это окно «сверху».
Параметры
- queryOptions
QueryOptions (необязательно)
Chrome 88+
Возвраты
Promise< Window >
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 необязателен
Новое состояние окна. Состояния «свернуто», «развернуто» и «полноэкранный режим» нельзя комбинировать с параметрами «слева», «сверху», «ширина» или «высота».
- вершина
число необязательно
Смещение окна относительно верхнего края экрана в пикселях. Для панелей это значение игнорируется.
- ширина
число необязательно
Ширина окна в пикселях, до которой нужно изменить размер. Для панелей это значение игнорируется.
Возвраты
Promise< Window >
Chrome 88+
События
onBoundsChanged
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
WindowType []
Условия, которым должен удовлетворять создаваемый тип окна. По умолчанию удовлетворяет
['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
WindowType []
Условия, которым должен удовлетворять удаляемый тип окна. По умолчанию удовлетворяет
['normal', 'popup'].
onRemoved
chrome.windows.onRemoved.addListener(
callback: function,
filters?: object,
)
Срабатывает при снятии (закрытии) окна.
Параметры
- перезвонить
функция
Chrome 46+Параметр
callbackвыглядит следующим образом:(windowId: number) => void
- windowId
число
Идентификатор удалённого окна.
- фильтры
объект необязательный
- windowTypes
WindowType []
Условия, которым должен удовлетворять удаляемый тип окна. По умолчанию удовлетворяет
['normal', 'popup'].