webNavigation
Добавляйте обработчики событий для различных этапов навигации. Навигация состоит из фрейма в браузере, переходящего от одного URL к другому, обычно (но не всегда) в ответ на действие пользователя, например, при нажатии на ссылку или вводе URL в строке адреса.
По сравнению с webRequest API: навигации обычно приводят к тому, что браузер выполняет веб-запросы, но API webRequest озабочен более низким уровнем представления из HTTP-слоя, в то время как API webNavigation больше озабочен представлением самого пользовательского интерфейса браузера.
Каждое событие соответствует определённому этапу навигации. Последовательность событий такова:
- Основной поток:
- Кроме того:
-
срабатывает доonCreatedNavigationTargetonBeforeNavigate, если браузеру потребовалось создать новую вкладку или окно для навигации (например, потому что пользователь открыл ссылку в новой вкладке). -
onHistoryStateUpdatedсрабатывает, если страница использует API истории (2011) для обновления URL, отображаемого в адресной строке браузера. -
onReferenceFragmentUpdatedсрабатывает, если изменяется идентификатор фрагмента фрагмента страницы. -
onErrorOccurredможет быть вызван в любой момент.
-
Каждая навигация — это переход по URL в определённом фрейме браузера. Фрейм браузера определяется идентификатором вкладки и идентификатором фрейма. Фрейм может быть контекстом верхнего уровня просмотра во вкладке или может быть вложенным контекстом просмотра, реализованным как iframe.
Вызов каждого события addListener() принимает необязательный параметр фильтра. Фильтр укажет один или несколько шаблонов URL, и событие затем будет активировано только для навигаций, в которых целевой URL соответствует одному из шаблонов.
Обработчик события onCommitted получает два дополнительных свойства: TransitionType, указывающее причину навигации (например, потому что пользователь нажал на ссылку или выбрал закладку), и TransitionQualifier, предоставляющее дополнительную информацию о навигации.
Для использования этого API вам необходимо иметь разрешение «webNavigation» разрешение.
Типы
-
Причина навигации: например, пользователь нажал на ссылку, ввёл адрес или нажал на закладку.
-
Дополнительная информация о переходе.
Функции
-
Получает информацию о конкретном фрейме. Фрейм может быть фреймом верхнего уровня во вкладке или вложенным iframe и уникально идентифицируется идентификатором вкладки и идентификатором фрейма.
-
По заданному идентификатору вкладки получает информацию обо всех содержащихся в ней фреймах.
События
-
Срабатывает, когда браузер собирается начать событие навигации.
-
Срабатывает, когда навигация завершается. По крайней мере, часть нового документа получена от сервера, и браузер решил переключиться на новый документ.
-
Срабатывает, когда на странице срабатывает событие DOMContentLoaded.
-
Срабатывает, когда документ, включая ресурсы, на которые он ссылается, полностью загружен и инициализирован. Это эквивалентно событию DOM
load. -
Срабатывает при возникновении ошибки и прерывании навигации. Это может произойти, если произошла ошибка сети или пользователь прервал навигацию.
-
Срабатывает при создании нового окна или новой вкладки в существующем окне для размещения навигации: например, если пользователь открывает ссылку в новой вкладке.
-
Срабатывает, если изменяется идентификатор фрагмента фрагмента страницы.
-
Срабатывает, когда содержимое вкладки заменяется другой (обычно предварительно отрисованной) вкладкой.
-
Срабатывает, когда страница использует 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 | ? | 17 | 14 | ? | ? | ? | 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Хотя вы можете добавить прослушиватели для этого события, оно никогда не будет срабатывать, поскольку базовая функциональность не поддерживается. |
? | Нет | ? |
Примеры расширений
Примечание: Этот 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