Пример #1
0
        private WKWebView OnCreateWebView(WKWebView owner, WKWebViewConfiguration configuration, WKNavigationAction action, WKWindowFeatures windowFeatures)
        {
            Uri target;

            if (action?.TargetFrame != null)
            {
                target = action?.TargetFrame.Request?.Url?.ToUri();
            }
            else
            {
                target = action.Request.Url.ToUri();
            }

            var args = new WebViewNewWindowRequestedEventArgs(
                referrer: action.SourceFrame?.Request?.Url?.ToUri(),
                uri: target
                );

            _parentWebView.OnNewWindowRequested(args);

            if (args.Handled)
            {
                return(null);
            }
            else
            {
                var navigationArgs = new WebViewNavigationStartingEventArgs()
                {
                    Cancel = false,
                    Uri    = target
                };

                _parentWebView.OnNavigationStarting(navigationArgs);

                if (!navigationArgs.Cancel)
                {
                    if (UIKit.UIApplication.SharedApplication.CanOpenUrl(target))
                    {
                        UIKit.UIApplication.SharedApplication.OpenUrl(target);
                        _parentWebView.OnComplete(target, isSuccessful: true, status: WebErrorStatus.Unknown);
                    }
                    else
                    {
                        _parentWebView.OnNavigationFailed(new WebViewNavigationFailedEventArgs()
                        {
                            Uri            = target,
                            WebErrorStatus = WebErrorStatus.Unknown
                        });
                    }
                }
            }

            return(null);
        }
Пример #2
0
 internal void OnNewWindowRequested(WebViewNewWindowRequestedEventArgs args)
 {
     NewWindowRequested?.Invoke(this, args);
 }