CefSharp ChromiumWebBrowser将初始化并加载传递给构造函数的页面,但是调用MyBrowser.L
本文关键字:MyBrowser 调用 构造函数 初始化 ChromiumWebBrowser 加载 CefSharp | 更新日期: 2023-09-27 18:09:55
如果我将一个网站传递给浏览器构造函数,如:
ChromiumWebBrowser MyBrowser = new ChromiumWebBrowser("www.google.com");
Google将加载。但是,在初始化浏览器之后,调用
MyBrowser.Load("Example.com");
显示空白屏幕。我有与FrameLoadEnd相关的事件,当google完成加载时触发,但在调用Load后根本不触发,这意味着网页甚至没有被加载到屏幕外。
我花了很长时间研究这个问题,但我找不到解决办法。我已经通过NuGet下载了软件包,安装了VC 2012 Redistributable,初始化了CefSettings,切换到x86等。我不确定我做错了什么,除了可能误解了这种方法的使用方式。也有可能我没有将正确的文件复制到我的输出目录,但我确实在所有引用上都设置了CopyLocal = True。
值得注意的是,我的浏览器是通过编程实现的,而不是拖拽到WinForms设计器中。这对我的代码来说是非常必要的,因为我有大量的浏览器来爬行网络并向用户显示页面,因此需要一个可靠的加载方法。这是我的发布文件夹中的debug.log样本,经过编辑删除了太多重复的内容:
[0826/130205:WARNING:resource_bundle.cc(304)] locale_file_path.empty()
...
[0826/131439:WARNING:resource_bundle.cc(304)] locale_file_path.empty()
[0826/134434:ERROR:renderer_main.cc(212)] Running without renderer sandbox
...
[0826/135650:ERROR:renderer_main.cc(212)] Running without renderer sandbox
[0826/135658:ERROR:ipc_channel_win.cc(136)] pipe error: 109
[0826/135921:ERROR:renderer_main.cc(212)] Running without renderer sandbox
...
[0826/135921:ERROR:renderer_main.cc(212)] Running without renderer sandbox
[0826/135933:ERROR:ipc_channel_win.cc(378)] pipe error: 109
[0826/135933:ERROR:ipc_channel_win.cc(412)] pipe error: 232
[0826/140141:ERROR:renderer_main.cc(212)] Running without renderer sandbox
...
[0826/140141:ERROR:renderer_main.cc(212)] Running without renderer sandbox
[0826/140148:ERROR:ipc_channel_win.cc(412)] pipe error: 232
不幸的是,如果浏览器未初始化,Load
将静默失败。下一个版本是一个主要的重写,它会抛出一个异常,所以你会立即知道发生了什么。如果你钩住了IsBrowserInitializedChanged
事件,你应该能够在它触发后安全地调用Load。
https://github.com/cefsharp/CefSharp/blob/cefsharp/41/CefSharp.WinForms/ChromiumWebBrowser.cs L233
当前版本为41.0.1
。下一个版本将是43.0.0
(nuget.org
上已经发布了-pre
,尽管还没有完全准备好)