События навигации для приложений WebView2
Когда пользователь приложения WebView2 переходит на другую веб-страницу, URL-адрес или путь к файлу, это навигация. Каждая навигация запускает последовательность событий, связанных с навигацией. Собственная часть приложения WebView2 прослушивает эти события навигации и обрабатывает их.
События навигации выполняются, когда определенные асинхронные действия происходят с содержимым, отображаемым в экземпляре WebView2. Например, когда пользователь WebView2 переходит на новый веб-сайт, собственное содержимое прослушивает изменение, прослушивая NavigationStarting
событие. После завершения действия навигации NavigationCompleted
выполняется.
Поддерживаемые платформы: Win32, Windows Forms, WinUI, WPF.
Стандартная последовательность событий
Ниже приведена обычная последовательность событий, которые активируются на каждом шаге навигации:
Sequence | Событие | Описание | Обзор справочника по API |
---|---|---|---|
1 | NavigationStarting |
WebView2 начинает переходить, и навигация приводит к сетевому запросу. Узел может запретить запрос во время события. | Блокировка нежелательного перехода |
2 | SourceChanged |
Источник WebView2 изменяется на новый URL-адрес. Это событие может возникнуть в результате действия навигации, которое не вызывает сетевой запрос, например при переходе по фрагментам . | Журнал навигации |
3 | ContentLoading |
WebView2 начинает загрузку содержимого для новой страницы. | События навигации |
4 | HistoryChanged |
Навигация приводит к обновлению журнала WebView2. | Журнал навигации |
5 | BasicAuthenticationRequested |
Возникает при обнаружении WebView базового http-запроса проверки подлинности. См . раздел Обычная проверка подлинности для приложений WebView2. | Проверка подлинности |
6 | DOMContentLoaded |
WebView2 завершает синтаксический анализ содержимого модели DOM, но не завершает загрузку всех изображений, скриптов и другого содержимого на странице. | События навигации |
7 | NavigationCompleted |
WebView2 завершает загрузку содержимого на новую страницу. | События навигации |
Идентификаторы навигации
На приведенной выше схеме показаны события навигации с одинаковым NavigationId
свойством для соответствующего eventArgs
объекта.
Отслеживайте события навигации по каждому новому документу NavigationId
с помощью свойства объекта каждого события навигации eventArgs
. Каждая навигация включает в себя последовательность событий навигации. Значение NavigationId
меняется при каждом успешном переходе к новому документу.
События навигации с разными идентификаторами навигации могут перекрываться. Например, при запуске события навигации необходимо дождаться соответствующего NavigationStarting
события. Событие NavigationStarting
определяется свойством NavigationId
NavigationStartingEventArgs
объекта . Если вы запустите другую навигацию, вы увидите следующую последовательность:
- Событие
NavigationStarting
для первой навигации. - Событие
NavigationStarting
для второй навигации. - Событие
NavigationCompleted
для первой навигации. - Все остальные соответствующие события навигации для второй навигации.
В случаях ошибок событие может быть ContentLoading
или нет, в зависимости от того, продолжается ли переход на страницу ошибки.
Если возникает перенаправление HTTP, в строке есть несколько NavigationStarting
событий, в которых более поздние аргументы события имеют IsRedirect
свойство , однако идентификатор навигации остается прежним.
События навигации по одному и тому же документу, такие как переход к фрагменту в том же документе, не вызывают NavigationStarting
срабатывания события и не приводят к изменению идентификатора навигации.
Навигация в кадрах
Чтобы отслеживать или отменять события навигации внутри кадров в экземпляре WebView2, используйте эквивалентные API-интерфейсы и события, связанные с кадрами. См . раздел Использование кадров в приложениях WebView2.
Пример кода навигации
Пример кода, показывающий, как обрабатывать события навигации, см. в следующих разделах:
- Сведения о событиях навигации в статье Начало работы с WebView2 в приложениях WinUI 2 (UWP) — в этой статье нет примера кода; см. статьи о других платформах.
- Шаг 8. Обработка событий навигации в разделе Начало работы с WebView2 в приложениях WinUI 3 (Windows App SDK).
- Шаг 7. События навигации в статье Начало работы с WebView2 в приложениях WPF.
- Шаг 8. События навигации в статье Начало работы с WebView2 в приложениях WinForms.
- Шаг 13. События навигации в разделе Начало работы с WebView2 в приложениях Win32.
Примеры приложений WebView2 также демонстрируют обработку событий навигации.
См. также
- Переход к страницам и управление загруженным содержимым в разделе Обзор функций и API WebView2
- Обычная проверка подлинности для приложений WebView2
- Начало работы с WebView2
- Репозиторий WebView2Samples — исчерпывающий пример возможностей WebView2.
- Справочник по API WebView2