Spec-Zone.ru › Web Extensions

webNavigation

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

По сравнению с webRequest API: навигации обычно приводят к тому, что браузер выполняет веб-запросы, но API webRequest озабочен более низким уровнем представления из HTTP-слоя, в то время как API webNavigation больше озабочен представлением самого пользовательского интерфейса браузера.

Каждое событие соответствует определённому этапу навигации. Последовательность событий такова:

Visualization of the primary flow and additional flows described below.

  • Основной поток:
    • onBeforeNavigate
    • onCommitted
    • onDOMContentLoaded
    • onCompleted.
  • Кроме того:
    • onCreatedNavigationTarget срабатывает до onBeforeNavigate, если браузеру потребовалось создать новую вкладку или окно для навигации (например, потому что пользователь открыл ссылку в новой вкладке).
    • onHistoryStateUpdated срабатывает, если страница использует API истории (2011) для обновления URL, отображаемого в адресной строке браузера.
    • onReferenceFragmentUpdated срабатывает, если изменяется идентификатор фрагмента фрагмента страницы.
    • onErrorOccurred может быть вызван в любой момент.

Каждая навигация — это переход по URL в определённом фрейме браузера. Фрейм браузера определяется идентификатором вкладки и идентификатором фрейма. Фрейм может быть контекстом верхнего уровня просмотра во вкладке или может быть вложенным контекстом просмотра, реализованным как iframe.

Вызов каждого события addListener() принимает необязательный параметр фильтра. Фильтр укажет один или несколько шаблонов URL, и событие затем будет активировано только для навигаций, в которых целевой URL соответствует одному из шаблонов.

Обработчик события onCommitted получает два дополнительных свойства: TransitionType, указывающее причину навигации (например, потому что пользователь нажал на ссылку или выбрал закладку), и TransitionQualifier, предоставляющее дополнительную информацию о навигации.

Для использования этого API вам необходимо иметь разрешение «webNavigation» разрешение.

Типы

webNavigation.TransitionType

Причина навигации: например, пользователь нажал на ссылку, ввёл адрес или нажал на закладку.

webNavigation.TransitionQualifier

Дополнительная информация о переходе.

Функции

webNavigation.getFrame()

Получает информацию о конкретном фрейме. Фрейм может быть фреймом верхнего уровня во вкладке или вложенным iframe и уникально идентифицируется идентификатором вкладки и идентификатором фрейма.

webNavigation.getAllFrames()

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

События

webNavigation.onBeforeNavigate

Срабатывает, когда браузер собирается начать событие навигации.

webNavigation.onCommitted

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

webNavigation.onDOMContentLoaded

Срабатывает, когда на странице срабатывает событие DOMContentLoaded.

webNavigation.onCompleted

Срабатывает, когда документ, включая ресурсы, на которые он ссылается, полностью загружен и инициализирован. Это эквивалентно событию DOM load.

webNavigation.onErrorOccurred

Срабатывает при возникновении ошибки и прерывании навигации. Это может произойти, если произошла ошибка сети или пользователь прервал навигацию.

webNavigation.onCreatedNavigationTarget

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

webNavigation.onReferenceFragmentUpdated

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

webNavigation.onTabReplaced

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

webNavigation.onHistoryStateUpdated

Срабатывает, когда страница использует API истории (2011) для обновления URL, отображаемого в адресной строке браузера.

Совместимость с браузерами

Настольный Мобильный
Chrome Edge Firefox Internet Explorer Opera Safari WebView Android Chrome Android Firefox for Android Opera Android Safari на IOS Samsung Internet
TransitionQualifier Да 79
48'server_redirect' ограничен фреймами верхнего уровня, а 'client_redirect' не предоставляется при создании перенаправлений с помощью JavaScript.
? 17 Нет ? ?
48'server_redirect' ограничен фреймами верхнего уровня, а 'client_redirect' не предоставляется при создании перенаправлений с помощью JavaScript.
? Нет ?
TransitionType Да 79 48 ? 17 Нет ? ? 48 ? Нет ?
getAllFrames Да 14
47Возвращаемые объекты не включают свойство errorOccurred. См. ошибку 1248418.
? 17 14 ? ?
48Возвращаемые объекты не включают свойство errorOccurred. См. ошибку 1248418.
? 15 ?
getFrame Да 14 47 ? 17 14 ? ? 48 ? 15 ?
onBeforeNavigate
ДаЕсли параметр фильтра пуст, Chrome сопоставляет все URL-адреса.
14Фильтрация не поддерживается.
45["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
17Если параметр фильтра пуст, Opera сопоставляет все URL-адреса.
14Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
? ?
48["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
15Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
?
onCommitted
ДаЕсли параметр фильтра пуст, Chrome сопоставляет все URL-адреса.
14Фильтрация не поддерживается.
45["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
17Если параметр фильтра пуст, Opera сопоставляет все URL-адреса.
14Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
? ?
48["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
15Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
?
onCompleted
ДаЕсли параметр фильтра пуст, Chrome сопоставляет все URL-адреса.
14Фильтрация не поддерживается.
45["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
17Если параметр фильтра пуст, Opera сопоставляет все URL-адреса.
14Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
? ?
48["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
15Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
?
onCreatedNavigationTarget
ДаЕсли заблокированное всплывающее окно разблокировано пользователем, событие все равно не отправляется.
14
54["Если параметр фильтра пуст, Firefox выдает исключение.", "Если заблокированное всплывающее окно разблокировано пользователем, событие затем отправляется."]
?
17Если заблокированное всплывающее окно разблокировано пользователем, событие все равно не отправляется.
Нет ? ?
54["Если параметр фильтра пуст, Firefox выдает исключение.", "Если заблокированное всплывающее окно разблокировано пользователем, событие затем отправляется.", "Это событие отправляется только в случае 'window.open()'."]
? Нет ?
onDOMContentLoaded
ДаЕсли параметр фильтра пуст, Chrome сопоставляет все URL-адреса.
14Фильтрация не поддерживается.
45["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
17Если параметр фильтра пуст, Opera сопоставляет все URL-адреса.
14Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
? ?
48["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
15Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
?
onErrorOccurred
ДаЕсли параметр фильтра пуст, Chrome сопоставляет все URL-адреса.
14Фильтрация не поддерживается
45["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
17Если параметр фильтра пуст, Opera сопоставляет все URL-адреса.
14Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
? ?
48["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
15Если параметр фильтра пуст, Safari сопоставляет все URL-адреса.
?
onHistoryStateUpdated Да
14Фильтрация не поддерживается.
47 ? 17 Нет ? ? 48 ? Нет ?
onReferenceFragmentUpdated
ДаЕсли параметр фильтра пуст, Chrome сопоставляет все URL-адреса.
14Фильтрация не поддерживается.
45["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
?
17Если параметр фильтра пуст, Opera сопоставляет все URL-адреса.
Нет ? ?
48["Фильтрация поддерживается с версии 50.", "Если параметр фильтра пуст, Firefox выдает исключение."]
? Нет ?
onTabReplaced Да 14
45Хотя вы можете добавить прослушиватели для этого события, оно никогда не будет срабатывать, поскольку базовая функциональность не поддерживается.
? 17 Нет ? ?
48Хотя вы можете добавить прослушиватели для этого события, оно никогда не будет срабатывать, поскольку базовая функциональность не поддерживается.
? Нет ?

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

  • navigation-stats

Примечание: Этот API основан на API chrome.webNavigation Chromium. Эта документация получена из web_navigation.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/webNavigation

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API