хром.окна

Описание

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

Разрешения

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

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

Концепции и использование

Текущее окно

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

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

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

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

Примеры

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

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

Типы

CreateType

Хром 44+

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

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

"нормальный"
Определяет окно как стандартное.

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

"панель"
Определяет окно как панель.

QueryOptions

Хром 88+

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

  • заселить

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

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

  • Типы окон

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

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

Window

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

  • всегда наверху

    булев

    Будет ли окно всегда отображаться поверх остальных окон.

  • сосредоточенный

    булев

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

  • высота

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

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

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

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

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

  • инкогнито

    булев

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

  • левый

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

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

  • sessionId

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

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

  • состояние

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

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

  • вкладки

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

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

  • вершина

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

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

  • тип

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

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

  • ширина

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

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

WindowState

Хром 44+

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

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

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

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

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

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

"заблокированный-полноэкранный"
Заблокированное полноэкранное состояние окна. Из этого полноэкранного состояния невозможно выйти действием пользователя, и оно доступно только для расширений из списка разрешённых в Chrome OS.

WindowType

Хром 44+

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

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

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

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

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

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

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

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

WINDOW_ID_CURRENT

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

Ценить

-2

WINDOW_ID_NONE

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

Ценить

-1

Методы

create()

Обещать
chrome.windows.create(
  createData?: object,
  callback?: function,
)
: Promise<Window | undefined>

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

Параметры

  • createData

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

    • сосредоточенный

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

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

    • высота

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

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

    • инкогнито

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

      Должно ли новое окно быть окном в режиме инкогнито.

    • левый

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

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

    • setSelfAsOpener

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

      Chrome 64+

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

    • состояние

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

      Хром 44+

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

    • tabId

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

      Идентификатор вкладки для добавления в новое окно.

    • вершина

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

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

    • тип

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

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

    • URL-адрес

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

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

    • ширина

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

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

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

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

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

    (window?: Window) => void

    • окно

      Окно опционально

      Содержит подробную информацию о созданном окне.

Возврат

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

    Хром 88+

get()

Обещать
chrome.windows.get(
  windowId: number,
  queryOptions?: QueryOptions,
  callback?: function,
)
: Promise<Window>

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

Параметры

  • windowId

    число

  • queryOptions

    QueryOptions необязательны

    Хром 88+
  • перезвонить

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

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

    (window: Window) => void

Возврат

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

    Хром 88+

getAll()

Обещать
chrome.windows.getAll(
  queryOptions?: QueryOptions,
  callback?: function,
)
: Promise<Window[]>

Получает все окна.

Параметры

  • queryOptions

    QueryOptions необязательны

    Хром 88+
  • перезвонить

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

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

    (windows: Window[]) => void

Возврат

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

    Хром 88+

getCurrent()

Обещать
chrome.windows.getCurrent(
  queryOptions?: QueryOptions,
  callback?: function,
)
: Promise<Window>

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

Параметры

  • queryOptions

    QueryOptions необязательны

    Хром 88+
  • перезвонить

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

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

    (window: Window) => void

Возврат

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

    Хром 88+

getLastFocused()

Обещать
chrome.windows.getLastFocused(
  queryOptions?: QueryOptions,
  callback?: function,
)
: Promise<Window>

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

Параметры

  • queryOptions

    QueryOptions необязательны

    Хром 88+
  • перезвонить

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

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

    (window: Window) => void

Возврат

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

    Хром 88+

remove()

Обещать
chrome.windows.remove(
  windowId: number,
  callback?: function,
)
: Promise<void>

Удаляет (закрывает) окно и все вкладки внутри него.

Параметры

  • windowId

    число

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

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

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

    () => void

Возврат

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

    Хром 88+

update()

Обещать
chrome.windows.update(
  windowId: number,
  updateInfo: object,
  callback?: function,
)
: Promise<Window>

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

Параметры

  • windowId

    число

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

    объект

    • привлечьВнимание

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

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

    • сосредоточенный

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

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

    • высота

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

      Высота окна (в пикселях). Это значение игнорируется для панелей.

    • левый

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

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

    • состояние

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

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

    • вершина

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

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

    • ширина

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

      Ширина окна (в пикселях). Это значение игнорируется для панелей.

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

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

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

    (window: Window) => void

Возврат

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

    Хром 88+

События

onBoundsChanged

Хром 86+
chrome.windows.onBoundsChanged.addListener(
  callback: function,
)

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

Параметры

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

    функция

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

    (window: Window) => void

onCreated

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

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

Параметры

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

    функция

    Хром 46+

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

    (window: Window) => void

    • окно

      Подробная информация о созданном окне.

  • фильтры

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

    • Типы окон

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

onFocusChanged

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

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

Параметры

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

    функция

    Хром 46+

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

    (windowId: number) => void

    • windowId

      число

      Идентификатор нового окна, получившего фокус.

  • фильтры

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

    • Типы окон

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

onRemoved

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

Срабатывает при удалении (закрытии) окна.

Параметры

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

    функция

    Хром 46+

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

    (windowId: number) => void

    • windowId

      число

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

  • фильтры

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

    • Типы окон

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