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 einer WebView2-Instanz 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:
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 |
Navigations-IDs
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 beispielsweise 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:
- Das
NavigationStarting
Ereignis für die erste Navigation. - Das
NavigationStarting
Ereignis für die zweite Navigation. - Das
NavigationCompleted
Ereignis für die erste Navigation. - 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.
Navigation in Frames
Um Navigationsereignisse innerhalb von Frames in einer WebView2-Instanz zu überwachen oder abzubrechen, verwenden Sie die entsprechenden framebezogenen APIs und Ereignisse. Weitere Informationen finden Sie unter Verwenden von Frames in WebView2-Apps.
Beispielcode für die Navigation
Beispielcode zur Behandlung von Navigationsereignissen finden Sie unter:
- Informationen zu Navigationsereignissen finden Sie unter Erste Schritte mit WebView2 in WinUI 2-Apps (UWP) – kein Beispielcode im Artikel; Weitere Informationen finden Sie in den Artikeln anderer Frameworks.
- Schritt 5: Navigationsereignisse in Erste Schritte mit WebView2 in WinUI 3-Apps (Windows App SDK)
- Schritt 7: Navigationsereignisse unter Erste Schritte mit WebView2 in WPF-Apps.
- Schritt 8: Navigationsereignisse unter Erste Schritte mit WebView2 in WinForms-Apps.
- Schritt 13: Navigationsereignisse unter Erste Schritte mit WebView2 in Win32-Apps.
Die WebView2-Beispiel-Apps veranschaulichen auch die Behandlung von Navigationsereignissen.
Siehe auch
- Navigieren Sie zu Seiten, und verwalten Sie geladene Inhalte unter Übersicht über WebView2-Features und APIs.
- Standardauthentifizierung für WebView2-Apps
- Erste Schritte mit WebView2
- WebView2Samples-Repository : ein umfassendes Beispiel für WebView2-Funktionen.
- WebView2-API-Referenz