【问题标题】:Cefsharp - display page loading indicationCefsharp - 显示页面加载指示
【发布时间】:2016-05-24 02:18:39
【问题描述】:

我正在实现一个包含 cefsharp 铬嵌入式浏览器的 win 表单。

我面临以下问题 - 有时加载页面需要一些时间。 问题是用户在页面实际加载之前并不知道发生了什么。

我无法控制浏览器显示的页面。

我需要显示某种加载指示。我在网上搜索,唯一发现的是在加载时显示动画加载图像,并在加载页面时隐藏它(使用加载状态更改事件)。 它似乎让事情变得更慢。

我可以使用 Cefsharp 基础架构中的任何东西吗?或任何其他解决它的想法? 谢谢!

【问题讨论】:

  • LoadingStateChanged 是正确的事件。 CefSharp 中没有内置功能。如果速度很慢,请确保您没有在 LoadingStateChanged 处理程序中执行您的代码,它是自己的(使用 BeginInvokeUI 线程上执行代码)。

标签: chromium-embedded cefsharp


【解决方案1】:
ChromeView = new CefSharp.Wpf.ChromiumWebBrowser();
//Adding event listener
ChromeView.NavStateChanged += ChromeView_NavStateChanged;

//Event listener
private void ChromeView_NavStateChanged(object sender, CefSharp.NavStateChangedEventArgs e)
    {
        if(!e.IsLoading)
        {
            this.Dispatcher.Invoke(()=> { //Invoke UI Thread
                controller.setLoaderinBack(); //UI Update
            });
        }
        else
        {
            this.Dispatcher.Invoke(() => { //Invoke UI Thread
                    controller.setLoaderinFront(); //UI Update
            });
        }
    }

【讨论】:

  • 谢谢!最终我使用 LoadingStateChanged 事件实现了它(我使用 WinForm Cefsharp)
  • :) :) :) :) :) :) :) :) :)
【解决方案2】:

对于更高版本的 CefSharp(我的版本 81):

ChromeView = new CefSharp.Wpf.ChromiumWebBrowser();
//Adding event listener
ChromeView.LoadingStateChanged += ChromeView_NavStateChanged;

//Event listener
private void ChromeView_NavStateChanged(object sender, LoadingStateChangedEventArgs e)
    {
        if(!e.IsLoading)
        {
            //Stuff...
        }
        else
        {
            //Stuff...
        }
    }

【讨论】:

    猜你喜欢
    • 2014-12-19
    • 1970-01-01
    • 1970-01-01
    • 2017-09-13
    • 2021-01-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多