【问题标题】:Can the Microsoft Edge WebView2 control preload the page before displaying it?Microsoft Edge WebView2 控件可以在显示之前预加载页面吗?
【发布时间】: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 是在应用程序启动时创建的。代码已添加到问题描述中。

标签: wpf controls preload webview2


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 2020-09-05
    • 1970-01-01
    • 2016-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-07-11
    • 2013-01-22
    相关资源
    最近更新 更多