public async override void DidFinishNavigation(WKWebView webView, WKNavigation navigation) { if (Reference == null || !Reference.TryGetTarget(out FormsWebViewRenderer renderer)) { return; } if (renderer.Element == null) { return; } renderer.Element.HandleNavigationCompleted(webView.Url.ToString()); await renderer.OnJavascriptInjectionRequest(FormsWebView.InjectedFunction); if (renderer.Element.EnableGlobalCallbacks) { foreach (var function in FormsWebView.GlobalRegisteredCallbacks) { await renderer.OnJavascriptInjectionRequest(FormsWebView.GenerateFunctionScript(function.Key)); } } foreach (var function in renderer.Element.LocalRegisteredCallbacks) { await renderer.OnJavascriptInjectionRequest(FormsWebView.GenerateFunctionScript(function.Key)); } renderer.Element.CanGoBack = webView.CanGoBack; renderer.Element.CanGoForward = webView.CanGoForward; renderer.Element.Navigating = false; renderer.Element.HandleContentLoaded(); }
public async override void OnPageFinished(Android.Webkit.WebView view, string url) { if (Reference == null || !Reference.TryGetTarget(out FormsWebViewRenderer renderer)) { return; } if (renderer.Element == null || (view as WebViewEx).Disposed) { return; } // Add Injection Function await renderer.OnJavascriptInjectionRequest(FormsWebView.InjectedFunction); if (renderer?.Element == null || (view as WebViewEx).Disposed) { return; } // Add Global Callbacks if (renderer.Element.EnableGlobalCallbacks) { foreach (var callback in FormsWebView.GlobalRegisteredCallbacks) { await renderer.OnJavascriptInjectionRequest(FormsWebView.GenerateFunctionScript(callback.Key)); } } // Add Local Callbacks foreach (var callback in renderer.Element.LocalRegisteredCallbacks) { await renderer.OnJavascriptInjectionRequest(FormsWebView.GenerateFunctionScript(callback.Key)); } if (renderer?.Element == null || (view as WebViewEx).Disposed) { return; } renderer.Element.CanGoBack = view.CanGoBack(); renderer.Element.CanGoForward = view.CanGoForward(); renderer.Element.Navigating = false; renderer.Element.HandleNavigationCompleted(url); renderer.Element.HandleContentLoaded(); }