Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?
Posted
技术标签:
【中文标题】Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?【英文标题】:Can the Microsoft Edge WebView2 control preload the page before displaying it? 【发布时间】:2021-12-11 21:39:31 【问题描述】:我在我的 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) 中类似的设置?
【问题讨论】:
WebView2
是在你打开应用程序时创建的还是如何创建带有WebView
的标签的?
在用户打开该选项卡之前,该选项卡的内容可能不会被实例化。但我不知道这是否是这里的原因,因为您没有发布任何标记或代码。因此,目前只有读心者才能回答您的问题。
WebView2
是在应用程序启动时创建的。代码已添加到问题描述中。
【参考方案1】:
如果你想改变的是明显的延迟,我一直在努力解决同样的问题。由于 WebView2 必须在 UI 线程中使用,我不相信有解决该延迟的方法。对于“在有预加载选项之前这必须足够”的解决方案,我将我的 DefaultBackgroundColor 设置为与加载时相同的颜色,并在收到“加载”消息之前显示一个简单的“正在加载...”标签在 wv2Editor_WebMessageReceived 中,我在源 html 中使用 EventListener 引发,如下所示:
window.addEventListener('load', (event) =>
window.chrome.webview.postMessage(' "event":"Load"');
);
【讨论】:
以上是关于Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?的主要内容,如果未能解决你的问题,请参考以下文章
Microsoft Edge 浏览器开发控件WebView2 尝鲜
Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?
使用 Caliburn Micro 将 WebView2 绑定到 ViewModel
WinUI 3.0 - 为啥 UWP 项目要求 MS Edge for Business 用于 WebView2