События навигации для приложений WebView2

Когда пользователь приложения WebView2 переходит на другую веб-страницу, URL-адрес или путь к файлу, это навигация. Каждая навигация запускает последовательность событий, связанных с навигацией. Собственная часть приложения WebView2 прослушивает эти события навигации и обрабатывает их.

События навигации выполняются, когда определенные асинхронные действия происходят с содержимым, отображаемым в экземпляре WebView2. Например, когда пользователь WebView2 переходит на новый веб-сайт, собственное содержимое прослушивает изменение, прослушивая NavigationStarting событие. После завершения действия навигации NavigationCompleted выполняется.

Поддерживаемые платформы: Win32, Windows Forms, WinUI, WPF.

Стандартная последовательность событий

Ниже приведена обычная последовательность событий, которые активируются на каждом шаге навигации:

События навигации WebView2

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 определяется свойством NavigationIdNavigationStartingEventArgs объекта . Если вы запустите другую навигацию, вы увидите следующую последовательность:

  1. Событие NavigationStarting для первой навигации.
  2. Событие NavigationStarting для второй навигации.
  3. Событие NavigationCompleted для первой навигации.
  4. Все остальные соответствующие события навигации для второй навигации.

В случаях ошибок событие может быть ContentLoading или нет, в зависимости от того, продолжается ли переход на страницу ошибки.

Если возникает перенаправление HTTP, в строке есть несколько NavigationStarting событий, в которых более поздние аргументы события имеют IsRedirect свойство , однако идентификатор навигации остается прежним.

События навигации по одному и тому же документу, такие как переход к фрагменту в том же документе, не вызывают NavigationStarting срабатывания события и не приводят к изменению идентификатора навигации.

Чтобы отслеживать или отменять события навигации внутри кадров в экземпляре WebView2, используйте эквивалентные API-интерфейсы и события, связанные с кадрами. См . раздел Использование кадров в приложениях WebView2.

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

Примеры приложений WebView2 также демонстрируют обработку событий навигации.

См. также