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);
            }
        }
Пример #2
0
        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);
        }
Пример #3
0
        /// <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);
        }
Пример #5
0
        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);
        }