首页 > 解决方案 > Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?

问题描述

我在我的WPF应用程序中使用Microsoft Edge WebView2控件。我的应用程序有一个单独的选项卡,其中包含一个加载特定资源的浏览器元素。

WebView2在应用程序启动时创建

string userDataFolderPath = GetApplicationDataFolder();
userDataFolderPath = Path.Combine(userDataFolderPath, typeof(EOKModule).Namespace);

CoreWebView2EnvironmentOptions opt = new CoreWebView2EnvironmentOptions
{
    Language = "ru-RU"
};

CoreWebView2Environment env = await CoreWebView2Environment.CreateAsync(null, userDataFolderPath, opt);
await WebView.EnsureCoreWebView2Async(env);

WebView.CoreWebView2.Navigate(url);

但是,在用户打开该选项卡之前,浏览器不会加载该页面。有没有办法在显示之前在浏览器中预加载页面?也许有与标准 Microsoft Edge 浏览器 ( https://www.thewindowsclub.com/enable-preload-new-tab-page-on-edge ) 中类似的设置?

标签: wpfcontrolspreloadwebview2

解决方案


如果这是你想要改变的明显延迟,我一直在努力解决同样的问题。由于 WebView2 必须在 UI 线程中使用,我不相信有解决该延迟的方法。对于“这在有预加载选项之前就足够了”的解决方案,我将我的 DefaultBackgroundColor 设置为与加载时相同的颜色,并在收到“加载”消息之前显示一个简单的“正在加载...”标签在 wv2Editor_WebMessageReceived 中,我在源 html 中使用 EventListener 引发,如下所示:

            window.addEventListener('load', (event) => {
                window.chrome.webview.postMessage('{ "event":"Load"}');
            }); 

推荐阅读