protected override void OnElementChanged(ElementChangedEventArgs <HybridWebView> e) { base.OnElementChanged(e); if (Control == null) { userController = new WKUserContentController(); var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, true); var api = new WKUserScript(new NSString(Element.APIJS), WKUserScriptInjectionTime.AtDocumentStart, true); // var apiSetup = new WKUserScript(new NSString(APISetup), WKUserScriptInjectionTime.AtDocumentStart, true); userController.AddUserScript(script); userController.AddUserScript(api); // userController.AddUserScript(apiSetup); userController.AddScriptMessageHandler(this, "invokeAction"); var config = new WKWebViewConfiguration { UserContentController = userController }; WKJavascriptEvaluationResult handler = (NSObject result, NSError err) => { if (err != null) { System.Console.WriteLine(err); } if (result != null) { System.Console.WriteLine(result); } }; var webView = new WKWebView(Frame, config); // var js = (NSString)"SetupAPI()"; //webView.EvaluateJavaScript(js, null); webView.Configuration.Preferences.SetValueForKey(NSObject.FromObject(true), new NSString("allowFileAccessFromFileURLs")); webView.CustomUserAgent = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_1_2 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"; webView.SizeToFit(); SetNativeControl(webView); } if (e.OldElement != null) { userController.RemoveAllUserScripts(); userController.RemoveScriptMessageHandler("invokeAction"); userController.RemoveScriptMessageHandler("Terminate"); userController.RemoveScriptMessageHandler("Commit"); var hybridWebView = e.OldElement as HybridWebView; hybridWebView.Cleanup(); } if (e.NewElement != null) { var docsDir = NSFileManager.DefaultManager.GetUrl(NSSearchPathDirectory.DocumentDirectory, NSSearchPathDomain.User, null, true, out var error); var data = NSUrl.FromFilename(Path.Combine(docsDir.Path, Element.iOSPath)); var frame = NSUrl.FromFilename(Path.Combine(docsDir.Path, "Courses/index.htm")); var htmlString = new NSString(Element.Source); var content = NSUrl.FromFilename(Path.Combine(docsDir.Path, "Courses")); var contentFrame = NSUrl.FromFilename(Path.Combine(docsDir.Path)); Control.LoadFileUrl(data, content); } }
public override void DidFinishNavigation(WKWebView webView, WKNavigation navigation) { WKJavascriptEvaluationResult handler = (NSObject result, NSError error) => { if (error != null) { Console.WriteLine(result.ToString()); } }; webView.EvaluateJavaScript(HtmlCode, handler); }
/// <summary> /// Send a message to javascript. /// </summary> /// <param name="message">The message to send.</param> public void SendMessage(string message) { message = JsonConvert.ToString(message); WKJavascriptEvaluationResult wKJavascriptEvaluationResult = (o, e) => { if (e != null) { Console.WriteLine(e.ToString()); } }; this.webView.EvaluateJavaScript($"__dispatchMessageCallback({message})", wKJavascriptEvaluationResult); }
public void DidFinishNavigation(WKWebView webView, WKNavigation navigation) { string parameter1 = "string parameter"; int parameter2 = 2; WKJavascriptEvaluationResult handler = (NSObject results, NSError err) => { if (err != null) { System.Console.WriteLine(err); } if (results != null) { System.Console.WriteLine(results); } }; string script = string.Format("javascript:myJavascriptFunction('{0}','{1}');", parameter1, parameter2); WebViewObj.EvaluateJavaScript(script, handler); }
public WKJavascriptEvaluationResult GetJavascriptEvaluationResultHandler() { if (_handler == null) { _handler = (NSObject result, NSError err) => { if (err != null) { System.Console.WriteLine(err); } if (result != null) { System.Console.WriteLine(result); } }; } return(_handler); }
private void EvaluateJava() { WKJavascriptEvaluationResult handler = HandleWKJavascriptEvaluationResult; wkWebView.EvaluateJavaScript((NSString)@"navigator.userAgent", handler); }