wpf - 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 ) 中类似的设置?
解决方案
如果这是你想要改变的明显延迟,我一直在努力解决同样的问题。由于 WebView2 必须在 UI 线程中使用,我不相信有解决该延迟的方法。对于“这在有预加载选项之前就足够了”的解决方案,我将我的 DefaultBackgroundColor 设置为与加载时相同的颜色,并在收到“加载”消息之前显示一个简单的“正在加载...”标签在 wv2Editor_WebMessageReceived 中,我在源 html 中使用 EventListener 引发,如下所示:
window.addEventListener('load', (event) => {
window.chrome.webview.postMessage('{ "event":"Load"}');
});
推荐阅读
- neo4j - 在 Neo4j 中收集非常慢
- groovy - Groovy 星型导入和“部分”包的使用
- algorithm - 对从小到大的物体进行空间分区/碰撞检测的最佳算法?
- swift - 垂直滚动 NSTableView Swift macOS 中的水平 NSCollectionView
- r - 转置数据和序列挖掘行中最常见的模式
- javascript - 从今天到一周后生成工作日
- sql - 默认情况下将数值更改为科学计数法的列
- swift - SwipeCellKit 删除 tableView 中的最后一行创建错误
- c# - C# ASP.NET 表单查询:如何将复选框列表中的多个列表项获取到 SQL 查询中以输出到 Gridview
- c# - 使用 C# 静默卸载 InstallShield Installscript MSI 程序