protected override void OnElementChanged(ElementChangedEventArgs <BlazorWebView> e) { base.OnElementChanged(e); if (Control == null && e.NewElement != null) { userController = new WKUserContentController(); //var script = new WKUserScript(new NSString(ContextBridgeHelper.GetInjectableJavascript(false)), WKUserScriptInjectionTime.AtDocumentEnd, false); //userController.AddUserScript(script); userController.AddScriptMessageHandler(this, "invokeAction"); var config = new WKWebViewConfiguration { UserContentController = userController, Preferences = new WKPreferences() { JavaScriptCanOpenWindowsAutomatically = false, JavaScriptEnabled = true } }; var webView = new WKWebView(Frame, config); webView.NavigationDelegate = new WebNavigationDelegate(this); SetNativeControl(webView); } if (e.OldElement != null) { userController.RemoveAllUserScripts(); userController.RemoveScriptMessageHandler("invokeAction"); } if (e.NewElement != null) { Control.LoadRequest(new NSUrlRequest(new NSUrl(WebApplicationFactory.GetBaseURL()))); } }
public override void ViewDidLoad() { base.ViewDidLoad(); var config = new WKWebViewConfiguration(); //config.UserContentController.AddScriptMessageHandler(this, "interOp"); _webView = new WKWebView(View.Frame, config); _webView.NavigationDelegate = this; _webView.TranslatesAutoresizingMaskIntoConstraints = false; View.AddSubview(_webView); var keys = new object[] { "webview" }; var objects = new object[] { _webView }; var myViews = NSDictionary.FromObjectsAndKeys(objects, keys); //horizontal layout View.AddConstraints(NSLayoutConstraint.FromVisualFormat(@"|[webview]|", 0, null, myViews)); //vertical layout View.AddConstraints(NSLayoutConstraint.FromVisualFormat(@"V:|-44-[webview]|", 0, null, myViews)); var url = new NSUrl("http://pelican-chart-demo.azurewebsites.net/Chart/Ciq?x=1s"); var request = new NSUrlRequest(url); _webView.LoadRequest(request); }
protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e) { base.OnElementChanged(e); if (Control == null) { userController = new WKUserContentController(); var config = new WKWebViewConfiguration { UserContentController = userController }; var webView = new WKWebView(Frame, config); var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false); userController.AddUserScript(script); userController.AddScriptMessageHandler(this, "invokeAction"); SetNativeControl(webView); if (e.OldElement != null) { userController.RemoveAllUserScripts(); userController.RemoveScriptMessageHandler("invokeAction"); var hybridWebView = e.OldElement as HybridWebView; hybridWebView.Cleanup(); } if (e.NewElement != null) { var a = this.Control.Url; Control.AccessibilityViewIsModal = true; NSMutableUrlRequest sendData = new NSMutableUrlRequest(new NSUrl(Element.Uri)); Control.LoadRequest(sendData); } } }
public static WKWebViewConfiguration GetHybridWKWebViewConfiguration() { var config = new WKWebViewConfiguration(); config.SetUrlSchemeHandler(new SafeSchemaHandler(), "safe"); return(config); }
private void SetupControl() { _navigationDelegate = new HybridWebViewNavigationDelegate(this); _contentController = new WKUserContentController(); _contentController.AddScriptMessageHandler(this, "invokeAction"); _configuration = new WKWebViewConfiguration { UserContentController = _contentController, AllowsInlineMediaPlayback = true }; var wkWebView = new WKWebView(Frame, _configuration) { Opaque = false, UIDelegate = this, NavigationDelegate = _navigationDelegate, }; HybridWebViewControl.CallbackAdded += OnCallbackAdded; SetNativeControl(wkWebView); SetUserAgent(); OnControlChanged?.Invoke(this, wkWebView); }
public CustomVideoPlayer() { var webConfiguration = new WKWebViewConfiguration(); webview = new WKWebView(new CoreGraphics.CGRect(0, 0, 170, 200), webConfiguration); this.AddSubview(webview); }
private void SetupControl(FormsWebView element) { WebViewControlDelegate.OnNavigationRequestedFromUser += OnUserNavigationRequested; WebViewControlDelegate.OnInjectJavascriptRequest += OnInjectJavascriptRequested; WebViewControlDelegate.OnActionAdded += OnActionAdded; UserController = new WKUserContentController(); UserController.AddScriptMessageHandler(this, "invokeAction"); NavigationDelegate = new FormsWKNavigationDelegate(this, element); WebViewConfiguration = new WKWebViewConfiguration { UserContentController = UserController }; var webView = new WKWebView(Frame, WebViewConfiguration); webView.UIDelegate = this; webView.NavigationDelegate = NavigationDelegate; UriBase = NSBundle.MainBundle.ResourcePath; OnControlChanging?.Invoke(this, Element, Control); SetNativeControl(webView); OnControlChanged?.Invoke(this, Element, Control); }
protected override void OnElementChanged(ElementChangedEventArgs <CustomWebView> e) { base.OnElementChanged(e); if (Control == null) { var config = new WKWebViewConfiguration(); _wkWebView = new WKWebView(Frame, config); _wkWebView.NavigationDelegate = this; _wkWebView.ScrollView.AlwaysBounceVertical = false; _wkWebView.ScrollView.Bounces = false; _wkWebView.ScrollView.ShowsHorizontalScrollIndicator = false; _wkWebView.ScrollView.ShowsVerticalScrollIndicator = false; _wkWebView.ScrollView.ScrollEnabled = false; _wkWebView.ContentMode = UIKit.UIViewContentMode.ScaleToFill; SetNativeControl(_wkWebView); } if (e.NewElement != null && Element?.Source != null) { NSUrl baseurl = new NSUrl(NSBundle.MainBundle.BundlePath, true); //Control.LoadRequest(new NSUrlRequest(new NSUrl((Element.Source as UrlWebViewSource).Url))); Control.LoadHtmlString((Element.Source as HtmlWebViewSource).Html, baseurl); _wkWebView.NavigationDelegate = this; } }
public Xamarin.Forms.View CreateWebView() { var preferences = new WKPreferences() { JavaScriptEnabled = true, JavaScriptCanOpenWindowsAutomatically = false }; var configuration = new WKWebViewConfiguration() { UserContentController = userContentController = new WKUserContentController() }; var helper = new Ao3TrackHelper(this); var messageHandler = new Ao3TrackReader.iOS.ScriptMessageHandler(helper); userContentController.AddScriptMessageHandler((WKScriptMessageHandler)messageHandler, "ao3track"); this.helper = helper; configuration.Preferences = preferences; webView = new WKWebView(configuration) { NavigationDelegate = new NavigationDelegate(this) }; webView.FocuseChanged += WebView_FocusChange; var xview = webView.ToView(); xview.SizeChanged += Xview_SizeChanged; return(xview); }
public TrustlyWKWebView(string checkoutUrl, CGRect frame) : base(frame) { try { //Create a new content controller. var userContentController = new WKUserContentController(); //Create configuration var configuration = new WKWebViewConfiguration(); configuration.UserContentController = userContentController; configuration.Preferences.JavaScriptCanOpenWindowsAutomatically = true; //Crate a webview TrustlyView = new WKWebView(frame, configuration); TrustlyView.NavigationDelegate = this; TrustlyView.UIDelegate = this; TrustlyView.NavigationDelegate = this; TrustlyView.UIDelegate = this; //Add the trustly ScriptOpenURLScheme as a handler for this contentcontroller userContentController.AddScriptMessageHandler(new TrustlyWKScriptOpenURLScheme(TrustlyView), TrustlyWKScriptOpenURLScheme.NAME); var url = new NSUrl(checkoutUrl); TrustlyView.LoadRequest(new NSUrlRequest(url)); TrustlyView.AllowsBackForwardNavigationGestures = true; AddSubview(TrustlyView); TrustlyView.TranslatesAutoresizingMaskIntoConstraints = false; TrustlyView.BottomAnchor.ConstraintEqualTo(TrustlyView.Superview.BottomAnchor, 0).Active = true; TrustlyView.TopAnchor.ConstraintEqualTo(TrustlyView.Superview.TopAnchor, 0).Active = true; TrustlyView.LeadingAnchor.ConstraintEqualTo(TrustlyView.Superview.LeadingAnchor, 0).Active = true; TrustlyView.TrailingAnchor.ConstraintEqualTo(TrustlyView.Superview.TrailingAnchor, 0).Active = true; } catch { } }
void SetupControl(FormsWebView element) { WebViewControlDelegate.OnNavigationRequestedFromUser += OnUserNavigationRequested; WebViewControlDelegate.OnInjectJavascriptRequest += OnInjectJavascriptRequested; WebViewControlDelegate.OnStackNavigationRequested += OnStackNavigationRequested; WebViewControlDelegate.OnActionAdded += OnActionAdded; UserController = new WKUserContentController(); UserController.AddScriptMessageHandler(this, "invokeAction"); NavigationDelegate = new FormsWKNavigationDelegate(this, element); WebViewConfiguration = new WKWebViewConfiguration { UserContentController = UserController }; var webView = new WKWebView(Frame, WebViewConfiguration); webView.Opaque = false; webView.UIDelegate = this; webView.NavigationDelegate = NavigationDelegate; webView.ScalesPageToFit = true; OnControlChanging?.Invoke(this, Element, Control); SetNativeControl(webView); OnControlChanged?.Invoke(this, Element, Control); }
protected override void OnElementChanged(ElementChangedEventArgs <HybridWebView> e) { base.OnElementChanged(e); if (Control == null) { _userController = new WKUserContentController(); var script = new WKUserScript(new NSString(JSFunction), WKUserScriptInjectionTime.AtDocumentEnd, false); _userController.AddUserScript(script); _userController.AddScriptMessageHandler(this, "invokeAction"); var config = new WKWebViewConfiguration { UserContentController = _userController }; var webView = new WKWebView(Frame, config); SetNativeControl(webView); } if (e.OldElement != null) { _userController.RemoveAllUserScripts(); _userController.RemoveScriptMessageHandler("invokeAction"); var hybridWebView = e.OldElement as HybridWebView; hybridWebView.Cleanup(); } if (e.NewElement != null) { Control.LoadRequest(new NSUrlRequest(new NSUrl(Element.Uri))); } }
protected override void OnElementChanged(ElementChangedEventArgs <HybridWebPlatformView> e) { base.OnElementChanged(e); if (Control == null && e.NewElement != null) { userController = new WKUserContentController(); var config = new WKWebViewConfiguration() { UserContentController = userController }; var script = new WKUserScript(new NSString(NativeFunction + HybridWebPlatformView.GetInitialJsScript(NativeFuncCall)), WKUserScriptInjectionTime.AtDocumentEnd, false); userController.AddUserScript(script); userController.AddScriptMessageHandler(this, "native"); var webView = new WKWebView(Frame, config) { NavigationDelegate = CreateNavidationalDelagate(), UIDelegate = new HybridWebPlatformUIDelegate() }; webView.Opaque = false; webView.BackgroundColor = UIColor.Clear; SetNativeControl(webView); } e.NewElement.SetViewRenderer(this); }
protected override void OnElementChanged(ElementChangedEventArgs <ExtendedWebView> e) { try { view = (ExtendedWebView)Element; string url = view.Source.GetValue(UrlWebViewSource.UrlProperty).ToString(); //The width=device-width part sets the width of the page to follow the screen-width of the device //(which will vary depending on the device) string javaScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"; WKUserScript wkUScript = new WKUserScript((NSString)javaScript, WKUserScriptInjectionTime.AtDocumentEnd, true); WKUserContentController wkUController = new WKUserContentController(); wkUController.AddUserScript(wkUScript); WKWebViewConfiguration wkWebConfig = new WKWebViewConfiguration(); wkWebConfig.UserContentController = wkUController; _wkWebView = new WKWebView(Frame, wkWebConfig); _wkWebView.ScrollView.ScrollEnabled = true; _wkWebView.NavigationDelegate = new HybridWebviewDelegate(); _wkWebView.LoadRequest(new NSUrlRequest(new NSUrl(url))); SetNativeControl(_wkWebView); } catch (Exception ex) { Console.WriteLine(ex.Message); } }
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, false); userController.AddUserScript(script); userController.AddScriptMessageHandler(this, "invokeAction"); var config = new WKWebViewConfiguration { UserContentController = userController }; var webView = new WKWebView(Frame, config); SetNativeControl(webView); } if (e.OldElement != null) { userController.RemoveAllUserScripts(); userController.RemoveScriptMessageHandler("invokeAction"); var hybridWebView = e.OldElement as HybridWebView; hybridWebView.Cleanup(); } if (e.NewElement != null) { string fileName = Path.Combine(NSBundle.MainBundle.BundlePath, string.Format("Content/{0}", Element.Uri)); Control.LoadRequest(new NSUrlRequest(new NSUrl(fileName, false))); } }
public void AppDomainInitializer() { var userController = new WKUserContentController(); userController.AddScriptMessageHandler(this, "myapp"); var config = new WKWebViewConfiguration { UserContentController = userController }; webview_real = new WKWebView(View.Frame, config); View.AddSubview(webview_real); #region load from file string htmlPath = NSBundle.MainBundle.PathForResource("Alerts", "html"); string htmlContents = File.ReadAllText(htmlPath); webview_real.LoadHtmlString(htmlContents, null); #endregion #region load from url sample //var url = "https://www.google.com.tw"; //webview_real.LoadRequest(new NSUrlRequest(new NSUrl(url))); #endregion }
protected override void OnElementChanged(ElementChangedEventArgs <customWebView> e) { base.OnElementChanged(e); if (e.OldElement != null) { e.OldElement.SetTextScaned = null; e.OldElement.DoSearch = null; e.OldElement.Observe = null; } if (e.NewElement != null) { if (Control == null) { userController = new WKUserContentController(); var config = new WKWebViewConfiguration { UserContentController = userController }; wkWebView = new WKWebView(Frame, config); SetNativeControl(wkWebView); buttonPressedScriptHandler = new WebViewButtonPressedHandler(e.NewElement); userController.AddScriptMessageHandler(buttonPressedScriptHandler, "ButtonPressedScriptHandler"); } e.NewElement.SetTextScaned = SetSearchText; e.NewElement.DoSearch = DoSearch; e.NewElement.Observe = Observe; if (e.NewElement.Source != null) { Control.LoadRequest(new NSUrlRequest(new NSUrl((Element.Source as UrlWebViewSource)?.Url))); } } }
protected override void OnElementChanged(ElementChangedEventArgs <CustomWebView> e) { base.OnElementChanged(e); if (Control == null) { var config = new WKWebViewConfiguration(); config.AllowsInlineMediaPlayback = true; config.Preferences.JavaScriptEnabled = true; _wkWebView = new WKWebView(Frame, config); SetNativeControl(_wkWebView); } if (e.OldElement != null) { // Cleanup } if (e.NewElement != null) { Control.SizeToFit(); var customWebView = Element as CustomWebView; var documentsPath = Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments); if (!string.IsNullOrWhiteSpace(customWebView.Uri)) { var fileUrl = new NSUrl(customWebView.Uri, false); var docUrl = new NSUrl(documentsPath, true); Control.LoadFileUrl(fileUrl, docUrl); } else if (!string.IsNullOrWhiteSpace(customWebView.Data)) { Control.LoadHtmlString((NSString)customWebView.Data, NSUrl.FromString("https://localhost")); } } }
public HybridWebViewRenderer(WKWebViewConfiguration config) : base(config) { userController = config.UserContentController; var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false); userController.AddUserScript(script); }
protected override void OnElementChanged(ElementChangedEventArgs <GalleyBrowserControl> e) { base.OnElementChanged(e); if (Control == null) { _userController = new WKUserContentController(); var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false); _userController.AddUserScript(script); _userController.AddScriptMessageHandler(this, GalleyHtmlConstants.InvokeSharpCodeActionName); var config = new WKWebViewConfiguration { UserContentController = _userController }; var webView = new WKWebView(Frame, config) { NavigationDelegate = new CustomWKNavigationDelegate() }; SetNativeControl(webView); OnElementPropertyChanged(nameof(Element.Uri)); OnElementPropertyChanged(nameof(Element.Html)); OnJavaScriptInvoked(Element.JavaScriptFunction); } if (e.OldElement != null) { _userController.RemoveAllUserScripts(); _userController.RemoveScriptMessageHandler(GalleyHtmlConstants.InvokeSharpCodeActionName); e.OldElement.JavaScriptInvoked -= OnJavaScriptInvoked; } if (e.NewElement != null) { e.NewElement.JavaScriptInvoked += OnJavaScriptInvoked; } }
protected override void OnElementChanged(ElementChangedEventArgs <HybridWebView> e) { base.OnElementChanged(e); // if disposing, NewElement is null. In that case just return if (e.NewElement == null) { return; } if (Control == null) { EmbedJS(); var config = new WKWebViewConfiguration { UserContentController = _UserController }; var webView = new WKWebView(Frame, config); webView.WeakNavigationDelegate = this; webView.TranslatesAutoresizingMaskIntoConstraints = false; SetNativeControl(webView); } if (e.OldElement != null) { _UserController.RemoveAllUserScripts(); _UserController.RemoveScriptMessageHandler("invokeAction"); Element.InvokeScript -= Element_InvokeScriptEvent; } if (e.NewElement != null) { Element.InvokeScript += Element_InvokeScriptEvent; } }
/// <summary> /// Produces PNG from HTML /// </summary> /// <param name="taskCompletionSource"></param> /// <param name="html"></param> /// <param name="fileName"></param> public void ToPng(TaskCompletionSource <ToFileResult> taskCompletionSource, string html, string fileName, int width) { if (NSProcessInfo.ProcessInfo.IsOperatingSystemAtLeastVersion(new NSOperatingSystemVersion(11, 0, 0))) { string jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name', 'viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"; WKUserScript wkUScript = new WKUserScript((NSString)jScript, WKUserScriptInjectionTime.AtDocumentEnd, true); WKUserContentController wkUController = new WKUserContentController(); wkUController.AddUserScript(wkUScript); var configuration = new WKWebViewConfiguration { UserContentController = wkUController }; var webView = new WKWebView(new CGRect(0, 0, width, width), configuration) { UserInteractionEnabled = false, BackgroundColor = UIColor.White }; webView.NavigationDelegate = new WKNavigationCompleteCallback(fileName, new WebViewToPngSize(width), null, taskCompletionSource, NavigationComplete); webView.LoadHtmlString(html, null); } else { taskCompletionSource.SetResult(new ToFileResult(true, "PNG output not available prior to iOS 11")); } }
public static WebViewWrapper WrapperFactory(MusicProvider provider) { WKUserContentController controller = new WKUserContentController(); controller.AddUserScript( new WKUserScript(new NSString(provider.EventsJs), WKUserScriptInjectionTime.AtDocumentEnd, false) ); controller.AddScriptMessageHandler(Container.WKScriptMessageHandler, "playbackState"); WKWebViewConfiguration config = new WKWebViewConfiguration { UserContentController = controller }; config.Preferences.SetValueForKey(NSObject.FromObject(true), new NSString("developerExtrasEnabled")); var webView = new WKWebView(new CGRect(0, 0, 100, 100), config) { CustomUserAgent = "Mozilla/5.0 " + "(Macintosh; Intel Mac OS X 10_13_6) AppleWebKit/605.1.15 " + "(KHTML, like Gecko) Version/12.0 Safari/605.1.15", AutoresizingMask = NSViewResizingMask.HeightSizable | NSViewResizingMask.WidthSizable, NavigationDelegate = new NavigationDelegate() }; webView.TranslatesAutoresizingMaskIntoConstraints = false; var req = new NSUrlRequest(new NSUrl(provider.Url)); webView.LoadRequest(req); return(new WebViewWrapper(webView, provider)); }
protected override void OnElementChanged(ElementChangedEventArgs <WebViewExtended> e) { #pragma warning disable CA1062 // Validate arguments of public methods if (e.OldElement != null) #pragma warning restore CA1062 // Validate arguments of public methods { e.OldElement.SendMessageFromJSToDotNetRequested -= OnSendMessageFromJSToDotNetRequested; } if (e.NewElement != null) { if (Control == null) { #pragma warning disable CA2000 // Dispose objects before losing scope var config = new WKWebViewConfiguration(); #pragma warning restore CA2000 // Dispose objects before losing scope #pragma warning disable CA2000 // Dispose objects before losing scope config.Preferences.SetValueForKey(FromObject(true), new NSString("developerExtrasEnabled")); #pragma warning restore CA2000 // Dispose objects before losing scope var frameworkScriptSource = @" if (window.location.href.startsWith('app://')) { var blazorScript = document.createElement('script'); blazorScript.src = 'framework://blazor.desktop.js'; document.body.appendChild(blazorScript); (function () { window.onpageshow = function(event) { if (event.persisted) { window.location.reload(); } }; })(); } "; config.UserContentController.AddScriptMessageHandler(this, "webwindowinterop"); #pragma warning disable CA2000 // Dispose objects before losing scope config.UserContentController.AddUserScript(new WKUserScript( new NSString(frameworkScriptSource), WKUserScriptInjectionTime.AtDocumentEnd, true)); #pragma warning restore CA2000 // Dispose objects before losing scope foreach (var(scheme, handler) in Element.SchemeHandlers) { #pragma warning disable CA2000 // Dispose objects before losing scope config.SetUrlSchemeHandler(new SchemeHandler(handler), scheme); #pragma warning restore CA2000 // Dispose objects before losing scope } _wkWebView = new WKWebView(Frame, config); SetNativeControl(_wkWebView); _wkWebView.NavigationDelegate = new WebViewNavigationDelegate(Element); Element.SendMessageFromJSToDotNetRequested += OnSendMessageFromJSToDotNetRequested; } Load(); } base.OnElementChanged(e); }
public override void ViewDidLoad() { base.ViewDidLoad(); Title = "Connect Account"; View.BackgroundColor = ColorHelper.Background0.ToPlatformColor(); var config = new WKWebViewConfiguration(); config.ApplicationNameForUserAgent = "Version/8.0.2 Safari/600.2.5"; // Create the webview _webView = new WKWebView(View.Frame, config); _urlObs = _webView.AddObserver("URL", NSKeyValueObservingOptions.New, async(o) => { var newUrl = _webView.Url.ToString(); await ViewModel.HandleRequestCommand.ExecuteAsync(newUrl); }); View.AddSubview(_webView); // Navigate to the request url var url = new NSUrl(ViewModel.AuthenticationDetails.ConnectUrl); var request = new NSUrlRequest(url); _webView.LoadRequest(request); // Cancel button NavigationItem.LeftBarButtonItem = new UIBarButtonItem("Cancel", UIBarButtonItemStyle.Plain, delegate { ViewModel.CloseCommand.Execute(); }); }
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); } }
void SetupControl() { _navigationDelegate = new FormsNavigationDelegate(this); _contentController = new WKUserContentController(); _contentController.AddScriptMessageHandler(this, "invokeAction"); _configuration = new WKWebViewConfiguration { UserContentController = _contentController }; if (Element.ApplicationNameForUserAgent != null && Element.ApplicationNameForUserAgent.Length > 0) { _configuration.ApplicationNameForUserAgent = Element.ApplicationNameForUserAgent; } var wkWebView = new WKWebView(Frame, _configuration) { Opaque = false, UIDelegate = this, NavigationDelegate = _navigationDelegate }; FormsWebView.CallbackAdded += OnCallbackAdded; SetNativeControl(wkWebView); OnControlChanged?.Invoke(this, wkWebView); }
protected override void OnElementChanged(ElementChangedEventArgs <HybridWebView> e) { if (Control == null) { userController = new WKUserContentController(); var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentStart, false); userController.AddUserScript(script); userController.AddScriptMessageHandler(this, "invokeNativeCode"); var config = new WKWebViewConfiguration { UserContentController = userController }; var webView = new WKWebView(Frame, config); SetNativeControl(webView); } if (e.OldElement != null) { userController.RemoveAllUserScripts(); userController.RemoveScriptMessageHandler("invokeNativeCode"); var hybridWebView = e.OldElement as HybridWebView; hybridWebView.Cleanup(); } if (e.NewElement != null) { string fileName = Path.Combine(NSBundle.MainBundle.BundlePath, string.Format("Content/{0}", Element.Uri)); Control.LoadRequest(new NSUrlRequest(new NSUrl(fileName, false))); (e.NewElement as HybridWebView).NativeEvent += HybridWebViewRenderer_NativeEvent; //var fileContents = File.ReadAllText(fileName); //Control.LoadHtmlString(fileContents, new NSUrl(NSBundle.MainBundle.BundlePath + "/Content", true)); } }
void SetupControl() { _navigationDelegate = new FormsNavigationDelegate(this); _contentController = new WKUserContentController(); _contentController.AddScriptMessageHandler(this, "invokeAction"); _configuration = new WKWebViewConfiguration { UserContentController = _contentController, }; _configuration.ProcessPool = _processPool; var wkWebView = new WKWebView(Frame, _configuration) { Opaque = false, UIDelegate = this, NavigationDelegate = _navigationDelegate, }; FormsWebView.CallbackAdded += OnCallbackAdded; try { //Autoresize after rotation. Wrapped in try catch with no handling since untested wkWebView.ContentMode = UIViewContentMode.ScaleAspectFit; wkWebView.AutoresizingMask = UIViewAutoresizing.FlexibleDimensions; wkWebView.SizeToFit(); if (wkWebView.ScrollView != null) { wkWebView.ScrollView.Bounces = false; } } catch { /*Do nothing right now*/ } SetNativeControl(wkWebView); OnControlChanged?.Invoke(this, wkWebView); }
protected override void OnElementChanged(ElementChangedEventArgs <CustomWebView> e) { base.OnElementChanged(e); if (Control == null) { userController = new WKUserContentController(); var script = new WKUserScript(new NSString(JavaScriptFunction), WKUserScriptInjectionTime.AtDocumentEnd, false); userController.AddUserScript(script); userController.AddScriptMessageHandler(this, "invokeAction"); var config = new WKWebViewConfiguration { UserContentController = userController }; var webView = new WKWebView(Frame, config); SetNativeControl(webView); } if (e.OldElement != null) { userController.RemoveAllUserScripts(); userController.RemoveScriptMessageHandler("invokeAction"); var customWebView = e.OldElement as CustomWebView; customWebView.Cleanup(); } if (e.NewElement != null) { System.Diagnostics.Debug.WriteLine(Element.Uri); Control.LoadRequest(new NSUrlRequest(new NSUrl(Element.Uri))); } }
public ViewController() { var split = new NSSplitView (new CGRect (0.0f, 0.0f, 400.0f, 400.0f)) { DividerStyle = NSSplitViewDividerStyle.Thin }; var text = new NSTextField(new CGRect(0.0f, 0.0f, 64.0f, 16.0f)); split.AddSubview (text); var button = new NSButton (new CGRect (0.0f, 0.0f, 64.0f, 16.0f)) { Title = "Go", StringValue = "https://www.google.com/" // TODO: This doesn't get set for some reason }; button.Activated += (object sender, EventArgs e) => m_webView.LoadRequest (new NSUrlRequest (new NSUrl (text.StringValue))); split.AddSubview (button); var config = new WKWebViewConfiguration (); config.Preferences.SetValueForKey(NSNumber.FromBoolean(true), new NSString("developerExtrasEnabled")); m_webView = new WKWebView(new CGRect(0.0f, 0.0f, 400.0f, 400.0f), config); split.AddSubview (m_webView); View = split; }
public override void CustomizeWebView() { WKWebViewConfiguration config = new WKWebViewConfiguration (); // Adding Custom Message Handler WKUserContentController userContentController = new WKUserContentController (); WKScriptMessageHandler scriptMessageHandler = new IPhoneWKScriptMessageHandler (); userContentController.AddScriptMessageHandler (scriptMessageHandler, "service"); config.UserContentController = userContentController; // UIScreen screen = UIScreen.MainScreen; // RectangleF viewFrame = new RectangleF (new PointF (0, 0), new SizeF (320, 480)); this.webView = new WKWebView (this.View.Frame, config); //log ("************************* UnityUI_iOSViewController_WKWebView this.View.Frame.Height: " + this.View.Frame.Height); log ("UnityUI_iOSViewController_WKWebView removing bounces on WKWebView.ScrollView."); this.webView.ScrollView.Bounces = false; // TESTING REMOVING BOUNCYNG this.View.AddSubview (this.webView); }