Eventos de navegación para aplicaciones WebView2

Cuando el usuario de la aplicación WebView2 va a otra página web, dirección URL o ruta de acceso de archivo, se trata de una navegación. Cada navegación desencadena una secuencia de eventos relacionados con la navegación. La parte nativa de la aplicación WebView2 escucha estos eventos de navegación y los controla.

Los eventos de navegación se ejecutan cuando se producen acciones asincrónicas específicas en el contenido que se muestra en una instancia de WebView2. Por ejemplo, cuando un usuario de WebView2 navega a un nuevo sitio web, el contenido nativo escucha el cambio escuchando el NavigationStarting evento. Cuando se completa la acción de navegación, NavigationCompleted se ejecuta.

Plataformas admitidas: Win32, Windows Forms, WinUI, WPF.

Secuencia estándar de eventos

A continuación se muestra la secuencia normal de eventos que se desencadenan durante cada paso de una navegación:

Eventos de navegación de WebView2

Secuencia Evento Descripción Introducción a la referencia de API
1 NavigationStarting WebView2 comienza a navegar y la navegación da como resultado una solicitud de red. El host puede no permitir la solicitud durante el evento. Bloquear navegación no deseada
2 SourceChanged El origen de WebView2 cambia a una nueva dirección URL. El evento puede ser el resultado de una acción de navegación que no provoca una solicitud de red, como una navegación por fragmentos . Historial de navegación
3 ContentLoading WebView2 comienza a cargar contenido para la nueva página. Eventos de navegación
4 HistoryChanged La navegación hace que se actualice el historial de WebView2. Historial de navegación
5 BasicAuthenticationRequested Se genera cuando WebView encuentra una solicitud de autenticación HTTP básica. Consulte Autenticación básica para aplicaciones WebView2. Autenticación
6 DOMContentLoaded WebView2 finaliza el análisis del contenido DOM, pero no ha terminado de cargar todas las imágenes, scripts y otro contenido de la página. Eventos de navegación
7 NavigationCompleted WebView2 completa la carga de contenido en la nueva página. Eventos de navegación

En el diagrama anterior se muestran eventos de navegación que tienen la misma NavigationId propiedad en el objeto correspondiente eventArgs .

Realice un seguimiento de los eventos de navegación a cada documento nuevo mediante la NavigationId propiedad del objeto de cada evento de eventArgs navegación. Cada navegación implica una secuencia de eventos de navegación. El NavigationId valor cambia cada vez que se completa una navegación correcta a un nuevo documento.

Los eventos de navegación que tienen identificadores de navegación diferentes pueden superponerse. Por ejemplo, al iniciar un evento de navegación, debe esperar al evento relacionado NavigationStarting . La NavigationStarting propiedad del NavigationId objeto identifica el NavigationStartingEventArgs evento. Si, a continuación, inicia otra navegación, verá la siguiente secuencia:

  1. Evento NavigationStarting para la primera navegación.
  2. Evento NavigationStarting para la segunda navegación.
  3. Evento NavigationCompleted para la primera navegación.
  4. Todos los demás eventos de navegación adecuados para la segunda navegación.

En los casos de error, puede haber o no un ContentLoading evento, dependiendo de si la navegación continúa a una página de error.

Si se produce una redirección HTTP, hay varios NavigationStarting eventos en una fila, donde los argumentos de eventos posteriores tienen establecida la IsRedirect propiedad ; sin embargo, el identificador de navegación sigue siendo el mismo.

Los eventos de navegación del mismo documento, como navegar a un fragmento del mismo documento, no provocan que se despida un NavigationStarting evento y no hacen que el identificador de navegación cambie.

Para supervisar o cancelar eventos de navegación dentro de marcos en una instancia de WebView2, use las API y eventos equivalentes relacionados con marcos. Consulte Uso de marcos en aplicaciones WebView2.

Para obtener código de ejemplo que muestra cómo controlar eventos de navegación, consulte:

Las aplicaciones de ejemplo WebView2 también muestran cómo controlar eventos de navegación.

Vea también