如何使用 Microsoft.Maui.Controls.WebView [ Windows ] 禁用开发人员工具

问题描述 投票:0回答:3

如何禁用 Maui WebView 控件的开发人员工具? 使用 Xamarin WebView2,使用 CoreWebView2.Settings.AreDevToolsEnabled 非常容易。

事实上,我相信至少在Windows上,Maui WebView是基于CoreWebView2的。 有没有办法直接访问CoreWebView2.Settings?

谢谢,

maui webview2
3个回答
1
投票

maui中的

WebView
是windows平台上WinUI3的
WebView2
。根据这个链接,你可以尝试下面的代码在maui中禁用windows平台的开发者工具。

在xaml中:

<WebView x:Name="webview" .../>

在手边的代码中:

#if WINDOWS
   (webview.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2).CoreWebView2.Settings.AreDevToolsEnabled = false;
#endif

我做了一个示例来测试这一点,当我删除时,代码被击中了

#if
。但它无法禁用开发者工具。这似乎是 WebView2 的一个错误,您可以在 github 上报告它。


0
投票

嗯...我确实找到了解决方案。 似乎是在正确的时间设置AreBrowserAcceleratorKeysEnabled的问题。

并不理想,但设置第一次调用导航事件是有效的。 (也许有人知道更好的方法来做到这一点)

 WebView wv = new WebView();
 wv.Navigating += Wv_Navigating ;

private void Wv_Navigating(object sender, WebNavigatingEventArgs e)
{
  WebView webview = (WebView)sender;
  CoreWebView2 coreWebView2 = (webview.Handler.PlatformView as Microsoft.UI.Xaml.Controls.WebView2).CoreWebView2;
  coreWebView2.Settings.AreDevToolsEnabled = false;
  webview.Navigating -= Wv_Navigating;
}

      

0
投票

我认为

HandlerChanged
事件可能比
Navigating
事件更好。

Microsoft.Web.WebView2.Wpf.WebView2
CoreWebView2InitializationCompleted
事件。

Microsoft.UI.Xaml.Controls.WebView2
CoreWebView2Initialized
事件。

#if WINDOWS
using System;
using Microsoft.UI.Xaml.Controls;
using Microsoft.Web.WebView2.Core;

WebView wv = new();

wv.HandlerChanged +=
    (sender, e) =>
    {
        if (sender is not WebView webView)
        {
            return;
        }

        if (webView.Handler?.PlatformView is not WebView2 webView2)
        {
            return;
        }

        webView2.CoreWebView2Initialized +=
            (sender, e) =>
            {
                CoreWebView2Settings settings = webView2.CoreWebView2.Settings;

                settings.AreDevToolsEnabled = false;
            };
    };
#endif
© www.soinside.com 2019 - 2024. All rights reserved.