- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
首先,我是 C# 的新手,并且在学习 Cefsharp + javascript 的过程中,所以请尝试评论您认为有必要的任何解决方案,这样我就不会问愚蠢的问题了。
我试图等到页面用 Cefsharp 完成加载来执行我的代码,我已经尝试了在其他 stackoverflow 问题/github 上找到的几种解决方案,但没有成功。
我认为解决方案是“NavStateChanged”,但我收到以下 C# 错误:“ChromiumWebBrowser 不包含‘NavStateChanged’的定义”
谁能指出我正确的方向或给我一个片段?我并不是要你为我写完整的东西,但我真的迷失在这里,我同时学习了 C#、Cefsharp 和 javascript,嗯......它势不可挡。
这是我在网上寻找解决方案时找到的代码,它也匹配了很多github引用但似乎不起作用:/
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)
{
chromeBrowser.NavStateChanged -= handler;
MessageBox.Show("The page has completed loading", "Load completed",
MessageBoxButtons.OK);
//TODO : once load complete show the actual page
}
最佳答案
对于其他想知道我所做的同样事情的人:是的,它们已经过时了,感谢 amaitland 的链接!
https://github.com/cefsharp/CefSharp/wiki/General-Usage#handlers
这些似乎是与我相关的所有 3 个正确的加载状态:
browser.RenderProcessMessageHandler = new RenderProcessMessageHandler();
public class RenderProcessMessageHandler : IRenderProcessMessageHandler
{
// Wait for the underlying `Javascript Context` to be created, this is only called for the main frame.
// If the page has no javascript, no context will be created.
void IRenderProcessMessageHandler.OnContextCreated(IWebBrowser browserControl, IBrowser browser, IFrame frame)
{
const string script = "document.addEventListener('DOMContentLoaded', function(){ alert('DomLoaded'); });";
frame.ExecuteJavaScriptAsync(script);
}
}
//Wait for the page to finish loading (all resources will have been loaded, rendering is likely still happening)
browser.LoadingStateChanged += (sender, args) =>
{
//Wait for the Page to finish loading
if (args.IsLoading == false)
{
browser.ExecuteJavaScriptAsync("alert('All Resources Have Loaded');");
}
}
//Wait for the MainFrame to finish loading
browser.FrameLoadEnd += (sender, args) =>
{
//Wait for the MainFrame to finish loading
if(args.Frame.IsMain)
{
args.Frame.ExecuteJavaScriptAsync("alert('MainFrame finished loading');");
}
};
关于c# - 使用 CefSharp 等待页面加载,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43461640/
CefSharp 有许多运行所需的依赖项和库。构建文件夹很困惑。如何将所需的 .dll 和 .pak 依赖项移至子文件夹? 最佳答案 首先,为了让一切变得更容易,我建议向 Visual Studios
我正在考虑将项目移动到 WinForm 应用程序中的嵌入式 WebView 类型体系结构中,并且正在考虑 DotNetBrowser 和 CefSharp。 经过多次搜索,我似乎找不到免费 CefSh
我正在尝试使用 CefSharp 访问 URL 并捕获在加载给定页面期间检索到的特定资源。大概作为每个资源的流或字节数组。 CefSharp 提供接口(interface) IRequestHandl
为了使用 WebClient 而不是 Chrome 进行下载,我截获了一个下载 URL。然后我在使用 获取 cookie 时遇到了问题。访客 .我陷入的陷阱是我不明白访问者是异步运行的,因此只有 30
使用 CEFSharp 浏览器构建应用程序,在我的机器上运行良好,但在服务器上崩溃并出现以下错误: System.IO.FileLoadException:无法加载由“CefSharp.Core.dl
我已经在 CefSharp WinForms 应用程序上工作了几个星期,并且没有遇到任何问题。今天早上,在向应用程序添加一些东西时,我试图运行它来测试一些东西并得到以下错误: System.IO.Fi
使用 XMLHttpRequest which is the subject of my previous question使用自定义方案我正在加载本地文件。为了测试,我使用了 disable-web
我关注了这个link实现 CefSharp 应用程序。 但是我在编写 MainWindow.xaml 时卡住了。 Blend for VS 2015 说, The name ChromiumWebBr
我收到消息命名空间“clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf 中不存在名称 ChromiumWebBrowser 当我运行这个
是否可以使用 CefSharp 获取网页的屏幕截图?我找到了关于GetImage()的信息方法,但它似乎不再受支持。有没有其他办法?我需要从屏幕外浏览器获取屏幕截图,因此使用显示浏览器的屏幕截图不是解
我正在使用 CEFsharp 浏览器并通过 LoadingStateChanged 事件确定页面已完成加载,但它会触发多次。 我需要它只在页面完全加载后触发,这怎么办? private async v
我需要在 Wpf 应用程序中使用 Web 浏览器,我尝试使用工具箱中的浏览器,但遇到一些问题并转到 CefSharp。 public MainWindow() { InitializeCompone
如何使用CefSharp获取HTML元素的值? 我知道如何使用此默认WebBrowser控件: Dim Elem As HtmlElement = WebBrowser1.Document.GetEl
我们希望在 wpf 应用程序中的基于 chromium 的浏览器中显示网页。在浏览器中显示的网站也应该显示在另一个屏幕上,但没有交互。我想将cefsharp wpf浏览器控件和cefsharp离屏渲染
有人可以帮助我了解如何在使用 CefSharp winforms 控件时捕获鼠标事件吗? 最佳答案 我没有详细检查以下示例链接,但搜索“global mouse hook”应该会带您到正确的方向。 示
我使用 64 位版本的 CefSharp 3 创建了一个示例应用程序。当所有必需的库与主应用程序可执行文件位于同一文件夹时,它工作正常。我想知道是否有办法从另一个路径读取 CefSharp 所需的 d
我正在开发一个项目,我希望使用 Chromium Web 浏览器并能够读取通常通过 DevTools“网络”选项卡获取的数据。所以基本上我真正需要的是 URL 和状态代码(404、200、50x 等)
在我的项目中加载 CefSharp 程序集时出现错误。 CefSharp 和 CefSharp.WinForms 都没有强命名。有什么办法解决这个问题吗? 错误: Referenced assembl
我已经成功地将 WebView 添加到 WPF 中的窗口。如何向浏览器添加选项卡?我用谷歌搜索但没有找到任何关于在 CefSharp 中制作标签式浏览器的好文档。 var settings = new
我正在使用 CefSharp Winforms x86 构建。我想播放此链接中的视频: http://developers.canal-plus.com/rx-player/ 在 google chr
我是一名优秀的程序员,十分优秀!