Example #1
0
        private void RunBlazorStartupScripts(AWebView view)
        {
            // TODO: we need to protect against double initialization because the
            // OnPageFinished event refires after the app is brought back from the
            // foreground and the webview is brought back into view, without it actually
            // getting reloaded.


            // Set up JS ports
            view.EvaluateJavascript(@"

        const channel = new MessageChannel();
        var nativeJsPortOne = channel.port1;
        var nativeJsPortTwo = channel.port2;
        window.addEventListener('message', function (event) {
            if (event.data != 'capturePort') {
                nativeJsPortOne.postMessage(event.data)
            }
            else if (event.data == 'capturePort') {
                if (event.ports[0] != null) {
                    nativeJsPortTwo = event.ports[0]
                }
            }
        }, false);

        nativeJsPortOne.addEventListener('message', function (event) {
        }, false);

        nativeJsPortTwo.addEventListener('message', function (event) {
            // data from native code to JS
            if (window.external.__callback) {
                window.external.__callback(event.data);
            }
        }, false);
        nativeJsPortOne.start();
        nativeJsPortTwo.start();

        window.external.sendMessage = function (message) {
            // data from JS to native code
            nativeJsPortTwo.postMessage(message);
        };

        window.external.receiveMessage = function (callback) {
            window.external.__callback = callback;
        }

        ", new JavaScriptValueCallback(() =>
            {
                // Set up Server ports
                _webViewHandler?.WebviewManager?.SetUpMessageChannel();

                // Start Blazor
                view.EvaluateJavascript(@"
                    Blazor.start();
                ", new JavaScriptValueCallback(() =>
                {
                    // Done; no more action required
                }));
            }));
        }
Example #2
0
            public override void OnPageFinished(Android.Webkit.WebView view, string url)
            {
                base.OnPageFinished(view, url);

                view.EvaluateJavascript(string.Format("javascript: {0}", CallBackJavaScriptFunction), null);
                view.EvaluateJavascript(string.Format("javascript: {0}", CloseJavaScriptFunction), null);

                view.LoadUrl(string.Format("javascript:submitFunction({0})", Record));
            }
Example #3
0
        public static Task <string> ExecuteScriptAsync(AWebView webview, string script)
        {
            var jsResult = new JavascriptResult();

            webview.EvaluateJavascript(script, jsResult);
            return(jsResult.JsResult);
        }
 public override bool ShouldOverrideUrlLoading(Android.Webkit.WebView view, string url)
 {
     base.ShouldOverrideUrlLoading(view, url);
     Console.WriteLine("Current Url: {0}", url);
     WebViewPage.CurrentUrl = url;
     view.EvaluateJavascript("javascriptFunction()", new JavaScriptResult());
     return(false);
 }
 private void RunBlazorStartupScripts(AWebView view)
 {
     Log.Info("RunBlazorStartupScripts", "attaching Blazor init script.");
     view.EvaluateJavascript(@"
         var blazorScript = document.createElement('script');
         blazorScript.src = 'framework://blazor.desktop.js';
         document.head.appendChild(blazorScript);
     ", this);
 }
Example #6
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 #7
0
        public override void OnPageFinished(Android.Webkit.WebView view, string url)
        {
            base.OnPageFinished(view, url);
            view.EvaluateJavascript(_javascript, null);
            var source = new UrlWebViewSource {
                Url = url
            };
            var args = new WebNavigatedEventArgs(WebNavigationEvent.NewPage, source, url, WebNavigationResult.Success);

            _renderer.Element.SendNavigated(args);
            openBrowser = false;
        }
Example #8
0
 public static void EvaluateJavaScript(this AWebView webView, EvaluateJavaScriptAsyncRequest request)
 {
     try
     {
         var javaScriptResult = new JavascriptResult();
         webView.EvaluateJavascript(request.Script, javaScriptResult);
         request.RunAndReport(javaScriptResult.JsResult);
     }
     catch (Exception ex)
     {
         request.SetException(ex);
     }
 }
Example #9
0
        //This should be IAsyncOperation<string> instead of Task<string> but we use an extension method to enable the same signature in Win.
        //IAsyncOperation is not available in Xamarin.
        public async Task <string> InvokeScriptAsync(CancellationToken ct, string script, string[] arguments)
        {
            var argumentString = ConcatenateJavascriptArguments(arguments);

            TaskCompletionSource <string> tcs = new TaskCompletionSource <string>();

            ct.Register(() => tcs.TrySetCanceled());

            _webView.EvaluateJavascript(
                string.Format(CultureInfo.InvariantCulture, "javascript:{0}(\"{1}\");", script, argumentString),
                new ScriptResponse(value => tcs.SetResult(value)));

            return(await tcs.Task);
        }
        public override void OnPageFinished(Android.Webkit.WebView view, string url)
        {
            base.OnPageFinished(view, url);

            string parameter1 = "string parameter";
            int    parameter2 = 2;
            string script     = string.Format("javascript:myJavascriptFunction('{0}','{1}');", parameter1, parameter2);

            if (Build.VERSION.SdkInt >= BuildVersionCodes.Kitkat)
            {
                Device.BeginInvokeOnMainThread(() => view.EvaluateJavascript(script, null));
            }
            else
            {
                Device.BeginInvokeOnMainThread(() => view.LoadUrl(script));
            }
        }
 private void RunBlazorStartupScripts(AWebView view)
 {
     Log.Info("RunBlazorStartupScripts", "attaching Blazor init script.");
     // we need to protect against reinsertion of the script tag because the
     // OnPageFinished event refires after the app is brought back from the
     // foreground and the webview is brought back into view, without it actually
     // getting reloaded.
     view.EvaluateJavascript(@"
         if (document.getElementById('blazorDesktopFrameworkScriptTag') == null)
         {
             var blazorScript = document.createElement('script');
             blazorScript.id = 'blazorDesktopFrameworkScriptTag';
             blazorScript.src = 'framework://blazor.desktop.js';
             document.head.appendChild(blazorScript);
         }
     ", this);
 }
Example #12
0
        public override void OnPageFinished(Android.Webkit.WebView view, string url)
        {
            base.OnPageFinished(view, url);

            String blank  = "\"";
            string script = string.Format("javascript:func4(" + blank + param.pg.ToString() + blank + "," + /*pg사(inicis 기본)*/
                                          blank + param.pay_method.ToString() + blank + "," +               /*결제방법(카드결제기본)*/
                                          blank + param.merchant_uid.ToString() + blank + "," +             /*결제시각*/
                                          blank + param.name.ToString() + blank + "," +                     /*주문한 상품 이름*/
                                          param.amount.ToString() + "," +                                   /* 결제 가격(int)*/
                                          blank + param.buyer_email.ToString() + blank + "," +              /*구매자 이메일*/
                                          blank + param.buyer_name.ToString() + blank + "," +               /*구매자 이름*/
                                          blank + param.buyer_tel.ToString() + blank + "," +                /*구매자 전화번호*/
                                          blank + param.buyer_addr.ToString() + blank + "," +               /*구매자 주소*/
                                          blank + param.buyer_postcode.ToString() + blank + ")");           /*구매자 우편번호*/

            view.EvaluateJavascript(script, null);
        }
 public override void OnPageFinished(Android.Webkit.WebView view, string url)
 {
     base.OnPageFinished(view, url);
     view.EvaluateJavascript(_javascript, null);
 }
Example #14
0
 public JavaScriptEvaluator(Android.Webkit.WebView webView, string script)
 {
     webView.EvaluateJavascript(script, this);
 }
Example #15
0
 /// <summary>
 /// Metoda se poziva više puta prilikom učitavanja našeg WebViewa te će svaki put pokušati izvršiti funkciju "EvaluateJavascript".
 /// Ta funkcija vraća željeni odgovor u trenutku uspješne prijave, u suprotnom ispisuje poruku da ne može pronaći zadanu funkciju "upisiId()"
 /// što je normalno jer funkcija nastaje tek nakon uspješne prijave.
 /// </summary>
 /// <param name="view"></param>
 /// <param name="url"></param>
 public override void OnPageFinished(Android.Webkit.WebView view, string url)
 {
     view.EvaluateJavascript("javascript:upisiId();", new JavaScriptRezultat());
 }
Example #16
0
 public override void OnPageFinished(Android.Webkit.WebView view, string url)
 {
     base.OnPageFinished(view, url);
     view.EvaluateJavascript("document.body.scrollHeight", this);
 }