Navigationsereignisse für WebView2-Apps

Wenn der Benutzer Ihrer WebView2-App zu einer anderen Webseite, URL oder einem anderen Dateipfad wechselt, ist dies eine Navigation. Jede Navigation löst eine Sequenz von Navigationsereignissen aus. Der native Teil Ihrer WebView2-App lauscht auf diese Navigationsereignisse und verarbeitet sie.

Navigationsereignisse werden ausgeführt, wenn bestimmte asynchrone Aktionen für den Inhalt auftreten, der in einem WebView2-instance angezeigt wird. Wenn beispielsweise ein WebView2-Benutzer zu einer neuen Website navigiert, lauscht der native Inhalt auf die Änderung, indem er auf das NavigationStarting Ereignis lauscht. Wenn die Navigationsaktion abgeschlossen ist, NavigationCompleted wird ausgeführt.

Unterstützte Plattformen: Win32, Windows Forms, WinUI, WPF.

Standardsequenz von Ereignissen

Im Folgenden finden Sie die normale Abfolge von Ereignissen, die während der einzelnen Schritte einer Navigation ausgelöst werden:

WebView2-Navigationsereignisse

Sequence Ereignis Beschreibung Übersicht über die API-Referenz
1 NavigationStarting WebView2 beginnt mit der Navigation, und die Navigation führt zu einer Netzwerkanforderung. Der Host lässt die Anforderung möglicherweise während des Ereignisses nicht zu. Unerwünschte Navigation blockieren
2 SourceChanged Die Quelle von WebView2 ändert sich in eine neue URL. Das Ereignis kann aus einer Navigationsaktion resultieren, die keine Netzwerkanforderung verursacht, z. B. eine Fragmentnavigation . Navigationsverlauf
3 ContentLoading WebView2 beginnt mit dem Laden von Inhalten für die neue Seite. Navigationsereignisse
4 HistoryChanged Die Navigation bewirkt, dass der Verlauf von WebView2 aktualisiert wird. Navigationsverlauf
5 BasicAuthenticationRequested Wird ausgelöst, wenn WebView auf eine Anforderung für die STANDARD-HTTP-Authentifizierung stößt. Weitere Informationen finden Sie unter Standardauthentifizierung für WebView2-Apps. Authentifizierung
6 DOMContentLoaded WebView2 beendet die Analyse des DOM-Inhalts, hat aber noch nicht das Laden aller Bilder, Skripts und anderer Inhalte auf der Seite abgeschlossen. Navigationsereignisse
7 NavigationCompleted WebView2 schließt das Laden von Inhalten auf der neuen Seite ab. Navigationsereignisse

Das obige Diagramm zeigt Navigationsereignisse, die die gleiche NavigationId Eigenschaft für das jeweilige eventArgs Objekt aufweisen.

Verfolgen Sie Navigationsereignisse für jedes neue Dokument mithilfe der NavigationId -Eigenschaft des Objekts jedes Navigationsereignisses eventArgs nach. Jede Navigation umfasst eine Sequenz von Navigationsereignissen. Der NavigationId Wert ändert sich jedes Mal, wenn eine erfolgreiche Navigation zu einem neuen Dokument abgeschlossen wird.

Navigationsereignisse mit unterschiedlichen Navigations-IDs können sich überschneiden. Wenn Sie instance ein Navigationsereignis starten, müssen Sie auf das zugehörige NavigationStarting Ereignis warten. Das NavigationStarting Ereignis wird durch die NavigationId -Eigenschaft des NavigationStartingEventArgs -Objekts identifiziert. Wenn Sie dann eine andere Navigation starten, wird die folgende Sequenz angezeigt:

  1. Das NavigationStarting Ereignis für die erste Navigation.
  2. Das NavigationStarting Ereignis für die zweite Navigation.
  3. Das NavigationCompleted Ereignis für die erste Navigation.
  4. Alle restlichen navigationsrelevanten Ereignisse für die zweite Navigation.

In Fehlerfällen kann es ein ContentLoading Ereignis geben, je nachdem, ob die Navigation zu einer Fehlerseite fortgesetzt wird.

Wenn eine HTTP-Umleitung auftritt, gibt es mehrere NavigationStarting Ereignisse in einer Zeile, wobei spätere Ereignisargumente die IsRedirect -Eigenschaft festgelegt haben. Die Navigations-ID bleibt jedoch gleich.

Navigationsereignisse im gleichen Dokument, z. B. das Navigieren zu einem Fragment im selben Dokument, führen nicht dazu, dass ein NavigationStarting Ereignis ausgelöst wird, und die Navigations-ID ändert sich nicht.

Um Navigationsereignisse innerhalb von Frames in einer WebView2-instance zu überwachen oder abzubrechen, verwenden Sie die entsprechenden framebezogenen APIs und Ereignisse. Weitere Informationen finden Sie unter Verwenden von Frames in WebView2-Apps.

Beispielcode zur Behandlung von Navigationsereignissen finden Sie unter:

Die WebView2-Beispiel-Apps veranschaulichen auch die Behandlung von Navigationsereignissen.

Siehe auch