From 4569c9335a50e29daf462c8084554fdc2e7a154a Mon Sep 17 00:00:00 2001 From: Aigio Liu Date: Mon, 11 Jul 2022 23:59:25 +0800 Subject: [PATCH] Add DOMContentLoaded --- .../WebView2Compat.xaml.cs | 10 ++++++++++ src/Avalonia.WebView2/WebView2.cs | 15 +++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/src/Avalonia.WebView2.Sample/WebView2Compat.xaml.cs b/src/Avalonia.WebView2.Sample/WebView2Compat.xaml.cs index 958aa26..1d6f439 100644 --- a/src/Avalonia.WebView2.Sample/WebView2Compat.xaml.cs +++ b/src/Avalonia.WebView2.Sample/WebView2Compat.xaml.cs @@ -9,11 +9,21 @@ public WebView2Compat() { InitializeComponent(); WebView2 = this.FindControl("WebView2"); + WebView2.IsVisible = false; TextBlock = this.FindControl("TextBlock"); if (!AvaloniaWebView2.IsSupported) { TextBlock.Text = "Couldn't find a compatible Webview2 Runtime installation to host WebViews."; } + else + { + WebView2.DOMContentLoaded += WebView2_DOMContentLoaded; + } + } + + void WebView2_DOMContentLoaded(object? sender, CoreWebView2DOMContentLoadedEventArgs e) + { + WebView2.IsVisible = true; } private void InitializeComponent() diff --git a/src/Avalonia.WebView2/WebView2.cs b/src/Avalonia.WebView2/WebView2.cs index de2b61d..5945ef0 100644 --- a/src/Avalonia.WebView2/WebView2.cs +++ b/src/Avalonia.WebView2/WebView2.cs @@ -179,6 +179,7 @@ void UnsubscribeHandlersAndCloseController(bool browserCrashed = false) CoreWebView2.SourceChanged -= new EventHandler(CoreWebView2_SourceChanged); CoreWebView2.WebMessageReceived -= new EventHandler(CoreWebView2_WebMessageReceived); CoreWebView2.ContentLoading -= new EventHandler(CoreWebView2_ContentLoading); + CoreWebView2.DOMContentLoaded -= new EventHandler(CoreWebView2_DOMContentLoaded); CoreWebView2.ProcessFailed -= new EventHandler(CoreWebView2_ProcessFailed); _coreWebView2Controller!.ZoomFactorChanged -= new EventHandler(CoreWebView2Controller_ZoomFactorChanged); //_coreWebView2Controller.MoveFocusRequested -= new EventHandler(CoreWebView2Controller_MoveFocusRequested); @@ -372,7 +373,7 @@ async Task InitCoreWebView2Async(CoreWebView2Environment? environment = null, Co sender._coreWebView2Controller.ZoomFactor = sender._zoomFactor; sender._coreWebView2Controller.DefaultBackgroundColor = sender._defaultBackgroundColor; OnBoundsChanged(EventArgs.Empty); - sender._coreWebView2Controller.IsVisible = false; + sender._coreWebView2Controller.IsVisible = IsVisible; try { sender._coreWebView2Controller.AllowExternalDrop = sender._allowExternalDrop; @@ -388,6 +389,7 @@ async Task InitCoreWebView2Async(CoreWebView2Environment? environment = null, Co sender.CoreWebView2.SourceChanged += new EventHandler(sender.CoreWebView2_SourceChanged); sender.CoreWebView2.WebMessageReceived += new EventHandler(sender.CoreWebView2_WebMessageReceived); sender.CoreWebView2.ContentLoading += new EventHandler(sender.CoreWebView2_ContentLoading); + sender.CoreWebView2.DOMContentLoaded += new EventHandler(sender.CoreWebView2_DOMContentLoaded); sender.CoreWebView2.ProcessFailed += new EventHandler(sender.CoreWebView2_ProcessFailed); if (sender.Focusable) sender._coreWebView2Controller.MoveFocus(CoreWebView2MoveFocusReason.Programmatic); @@ -839,6 +841,8 @@ void VerifyBrowserNotCrashedGuard() /// /// public event EventHandler? ContentLoading; + + public event EventHandler? DOMContentLoaded; #endif /// @@ -884,13 +888,20 @@ void CoreWebView2_SourceChanged(object? sender, CoreWebView2SourceChangedEventAr void CoreWebView2_ContentLoading(object? sender, CoreWebView2ContentLoadingEventArgs e) { - if (_coreWebView2Controller != null && !_coreWebView2Controller.IsVisible) _coreWebView2Controller.IsVisible = true; var contentLoading = ContentLoading; if (contentLoading == null) return; contentLoading(this, e); } + void CoreWebView2_DOMContentLoaded(object? sender, CoreWebView2DOMContentLoadedEventArgs e) + { + var contentLoading = DOMContentLoaded; + if (contentLoading == null) + return; + contentLoading(this, e); + } + void CoreWebView2_ProcessFailed(object? sender, CoreWebView2ProcessFailedEventArgs e) { if (e.ProcessFailedKind != CoreWebView2ProcessFailedKind.BrowserProcessExited)