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 })); })); }
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)); }
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); }
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); }
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; }
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); } }
//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); }
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); }
public JavaScriptEvaluator(Android.Webkit.WebView webView, string script) { webView.EvaluateJavascript(script, this); }
/// <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()); }
public override void OnPageFinished(Android.Webkit.WebView view, string url) { base.OnPageFinished(view, url); view.EvaluateJavascript("document.body.scrollHeight", this); }