Example #1
0
        public override async void OnPageFinished(Android.Webkit.WebView view, string url)
        {
            if (_reference == null || !_reference.TryGetTarget(out var renderer))
            {
                return;
            }
            if (renderer.Element == null || !renderer.Element.Navigating)
            {
                return;
            }

            renderer.Element.Navigating = false;

            renderer.Element.HandleNavigationCompleted(url);
            await renderer.OnJavascriptInjectionRequest(HybridWebViewControl.InjectedFunction);

            if (renderer.Element.EnableGlobalCallbacks)
            {
                foreach (var function in HybridWebViewControl.GlobalRegisteredCallbacks.ToList())
                {
                    await renderer.OnJavascriptInjectionRequest(HybridWebViewControl.GenerateFunctionScript(function.Key));
                }
            }

            foreach (var function in renderer.Element.LocalRegisteredCallbacks.ToList())
            {
                await renderer.OnJavascriptInjectionRequest(HybridWebViewControl.GenerateFunctionScript(function.Key));
            }

            renderer.Element.CanGoBack    = view.CanGoBack();
            renderer.Element.CanGoForward = view.CanGoForward();
            renderer.Element.HandleContentLoaded();
        }
Example #2
0
        internal static void UpdateCanGoBackForward(this AWebView platformWebView, IWebView webView)
        {
            if (webView == null || platformWebView == null)
            {
                return;
            }

            webView.CanGoBack    = platformWebView.CanGoBack();
            webView.CanGoForward = platformWebView.CanGoForward();
        }
Example #3
0
 public override void OnPageFinished(Android.Webkit.WebView view, string url)
 {
     if (_viewRenderer == null || _viewRenderer.Element == null)
     {
         return;
     }
     ((IWebViewController)_viewRenderer.Element).CanGoBack    = view.CanGoBack();
     ((IWebViewController)_viewRenderer.Element).CanGoForward = view.CanGoForward();
     base.OnPageFinished(view, url);
     view.EvaluateJavascript(_javascript, null);
 }
Example #4
0
        public static void UpdateGoForward(this AWebView platformWebView, IWebView webView)
        {
            if (platformWebView == null)
            {
                return;
            }

            if (platformWebView.CanGoForward())
            {
                platformWebView.GoForward();
            }

            platformWebView.UpdateCanGoBackForward(webView);
        }
Example #5
0
        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();
        }