Пример #1
0
        /// <inheritdoc />
        protected override WebViewContainer CreatePlatformView()
        {
            TChromium.Initialize();
            MauiApplication.Current.Terminated += (s, e) => TChromium.Shutdown();

            return(new WebViewContainer(NativeParent !));
        }
        protected override void OnElementChanged(ElementChangedEventArgs <WebViewExtended> e)
        {
            if (e is null)
            {
                throw new ArgumentNullException(nameof(e));
            }

            if (Control == null)
            {
                TChromium.Initialize();
                Forms.Context.Terminated += (sender, arg) => TChromium.Shutdown();
                SetNativeControl(new WebViewContainer(Forms.NativeParent));
                _interceptRequestCallback   = OnRequestInterceptCallback;
                NativeWebView.LoadStarted  += OnLoadStarted;
                NativeWebView.LoadFinished += OnLoadFinished;
                NativeWebView.LoadError    += OnLoadError;
                NativeWebView.AddJavaScriptMessageHandler("BlazorHandler", PostMessageFromJS);
                NativeWebView.SetInterceptRequestCallback(_interceptRequestCallback);
                NativeWebView.GetSettings().JavaScriptEnabled = true;
            }

            if (e.OldElement != null)
            {
                e.OldElement.SendMessageFromJSToDotNetRequested -= OnSendMessageFromJSToDotNetRequested;
                e.OldElement.EvalRequested      -= OnEvalRequested;
                e.OldElement.GoBackRequested    -= OnGoBackRequested;
                e.OldElement.GoForwardRequested -= OnGoForwardRequested;
                e.OldElement.ReloadRequested    -= OnReloadRequested;
            }

            if (e.NewElement != null)
            {
                e.NewElement.EvalRequested += OnEvalRequested;
                e.NewElement.EvaluateJavaScriptRequested        += OnEvaluateJavaScriptRequested;
                e.NewElement.GoForwardRequested                 += OnGoForwardRequested;
                e.NewElement.GoBackRequested                    += OnGoBackRequested;
                e.NewElement.ReloadRequested                    += OnReloadRequested;
                e.NewElement.SendMessageFromJSToDotNetRequested += OnSendMessageFromJSToDotNetRequested;
                Load();
            }
            base.OnElementChanged(e);
        }