Événements de navigation pour les applications WebView2

Lorsque l’utilisateur de votre application WebView2 accède à une autre page web, URL ou chemin d’accès au fichier, il s’agit d’une navigation. Chaque navigation déclenche une séquence d’événements liés à la navigation. La partie native de votre application WebView2 écoute ces événements de navigation et les gère.

Les événements de navigation s’exécutent lorsque des actions asynchrones spécifiques se produisent sur le contenu affiché dans un instance WebView2. Par exemple, lorsqu’un utilisateur WebView2 accède à un nouveau site web, le contenu natif écoute la modification en écoutant l’événement NavigationStarting . Une fois l’action de navigation terminée, s’exécute NavigationCompleted .

Plateformes prises en charge : Win32, Windows Forms, WinUI, WPF.

Séquence standard d’événements

Voici la séquence normale d’événements déclenchés à chaque étape d’une navigation :

Événements de navigation WebView2

Séquence Événement Description Vue d’ensemble des informations de référence sur les API
1 NavigationStarting WebView2 commence à naviguer et la navigation entraîne une requête réseau. L’hôte peut interdire la demande pendant l’événement. Bloquer la navigation indésirable
2 SourceChanged La source de WebView2 devient une nouvelle URL. L’événement peut résulter d’une action de navigation qui ne provoque pas de requête réseau, telle qu’une navigation par fragment . Historique de navigation
3 ContentLoading WebView2 commence à charger le contenu de la nouvelle page. Événements de navigation
4 HistoryChanged La navigation entraîne la mise à jour de l’historique de WebView2. Historique de navigation
5 BasicAuthenticationRequested Déclenché lorsque WebView rencontre une demande d’authentification HTTP de base. Consultez Authentification de base pour les applications WebView2. Authentification
6 DOMContentLoaded WebView2 termine l’analyse du contenu DOM, mais n’a pas fini de charger toutes les images, scripts et autres contenus sur la page. Événements de navigation
7 NavigationCompleted WebView2 termine le chargement du contenu sur la nouvelle page. Événements de navigation

Le diagramme ci-dessus montre les événements de navigation qui ont la même NavigationId propriété sur l’objet respectif eventArgs .

Suivez les événements de navigation vers chaque nouveau document à l’aide de la NavigationId propriété de l’objet de chaque événement de eventArgs navigation. Chaque navigation implique une séquence d’événements de navigation. La NavigationId valeur change chaque fois qu’une navigation réussie vers un nouveau document est terminée.

Les événements de navigation qui ont des ID de navigation différents peuvent se chevaucher. Par instance, lorsque vous démarrez un événement de navigation, vous devez attendre l’événement associéNavigationStarting. L’événement NavigationStarting est identifié par la NavigationId propriété sur l’objet NavigationStartingEventArgs . Si vous démarrez ensuite une autre navigation, la séquence suivante s’affiche :

  1. Événement NavigationStarting pour la première navigation.
  2. Événement NavigationStarting pour la deuxième navigation.
  3. Événement NavigationCompleted pour la première navigation.
  4. Tous les autres événements de navigation appropriés pour la deuxième navigation.

Dans les cas d’erreur, il peut y avoir ou non un ContentLoading événement, selon que la navigation est poursuivie ou non vers une page d’erreur.

Si une redirection HTTP se produit, il y a plusieurs NavigationStarting événements dans une ligne, où les arguments d’événement ultérieurs ont la IsRedirect propriété définie ; toutefois, l’ID de navigation reste le même.

Les événements de navigation dans le même document, tels que la navigation vers un fragment dans le même document, n’entraînent pas le déclenchement d’un NavigationStarting événement et ne modifient pas l’ID de navigation.

Pour surveiller ou annuler des événements de navigation à l’intérieur d’images dans un instance WebView2, utilisez les API et événements équivalents liés aux trames. Consultez Utilisation de cadres dans les applications WebView2.

Pour obtenir un exemple de code montrant comment gérer les événements de navigation, consultez :

Les exemples d’applications WebView2 illustrent également la gestion des événements de navigation.

Voir aussi