使用Cefsharp 39.0.0在winform中加载网页。现在,页面加载表单时为空白。如何显示加载gif?
public Browser() {
InitializeComponent();
string clientURL = "www.imdb.com";
ChromiumWebBrowser browser = new ChromiumWebBrowser(clientURL);
browser.Dock = DockStyle.Fill;
toolStripContainer.ContentPanel.Controls.Add(browser);
browser.RegisterJsObject("camera", new Camera());
}
我查看了NavStateChanged事件。但我不确定如何使用它来显示表格中本地resoruce的加载图像,直到网页完全加载为止。
EventHandler < NavStateChangedEventArgs > handler = null;
handler = (sender, args) = > {
//TODO : show a loading gif until the page load completes
//Wait for while page to finish loading not just the first frame
if (!args.IsLoading) {
browser.NavStateChanged -= handler;
MessageBox.Show("The page has completed loading", "Load completed", MessageBoxButtons.OK);
//TODO : once load complete show the actual page
}
};
答案 0 :(得分:1)
我们的应用程序是C ++,但其中一些可能适用。我们将一个html文件作为资源编译到我们的应用程序中,然后我们将该URL传递给CefBrowserHost :: CreateBrowserSync(),在您的情况下,它将是&#34; new ChromiumWebBrowser()&#34;。我们让启动画面加载我们想要的真实URL,同时它显示一个动画GIF。所以电话可能看起来像
new ChromiumWebBrowser("http://embeddedsplashscreen.html");
我们的embeddedsplashscreen.html正文
<body class="splash" onload=" pageLoad() ">
并且pageLoad()看起来像
function pageLoad() {
window.location = "www.urlyoureallywant.com";
}
}
我们的初始屏幕有一个由样式表和动画gif设置的背景,一旦请求的网址进入,它就会消失。
我不知道CefSharp是如何指定本地资源的。在C ++中,我们使用了cefclient示例中的resource_util_win.cpp中的技术,特别是GetResourceId(),用于将URL与编译后的资源ID相关联,它通过匹配硬编码表中URL中的文本来实现。
对于CefSharp我发现这些链接可能会有所帮助 - http://thechriskent.com/2014/05/12/use-embedded-resources-in-cefsharp/ 和 CefSharp LoadHtml
答案 1 :(得分:0)
您最初可以从本地磁盘加载自己的“加载页面”,这非常快。
第一种方法是使用ResourceHandler
(您可以从磁盘加载流)。
https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Example/CefExample.cs#L98
(您还应该使用SchemeHandler
,这样可以更灵活地查看https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Example/CefSharpSchemeHandler.cs#L46)
与CefSharp
完全无关的选项是在控件上叠加图像,并在完成后将其删除。这可能会提供最佳的用户体验。我确信像stackoverflow这样的地方在一般意义上有关于此的信息。
请记住,如果您隐藏浏览器实例,它将停止渲染(性能原因),它将继续加载。
如果您不需要代理支持,那么禁用它应该会略微加快初始加载(代理解析需要一段时间相对来说) https://github.com/cefsharp/CefSharp/blob/master/CefSharp.Example/CefExample.cs#L39