在wpf中使用 ChromiumWebBrowser ,版本是49来嵌套一个网页,升级到65版本之后发现嵌套的网页都变空白了,不知道哪里出了问题
初始化的执行代码:
if (!CefSharp.Cef.IsInitialized)
{
var settings = new CefSettings() { RemoteDebuggingPort = 8088 };
{
//By default CefSharp will use an in-memory cache, you need to specify a Cache Folder to persist data
var CachePath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "CefSharp\\Cache");
};
settings.Locale = "zh-CN";
settings.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.2; zh-CN) AppleWebKit/533+ (KHTML, like Gecko)";
settings.CefCommandLineArgs.Add("enable-media-stream", "1");
settings.CefCommandLineArgs.Add("disable-gpu", "1"); // 禁用gpu
Cef.Initialize(settings, performDependencyCheck: true, browserProcessHandler: null);
}
this.webView = new ChromiumWebBrowser();
WebWindow.Children.Add(webView);
webView.SetValue(Grid.ColumnProperty, 0);
CefSharpSettings.SubprocessExitIfParentProcessClosed = true;
CefSharpSettings.LegacyJavascriptBindingEnabled = true;
this.helper.DownloadingFile += Helper_OnDownloadFile;
//将c#对象注册为 js对象
webView.RegisterAsyncJsObject("test", helper, new CefSharp.BindingOptions { CamelCaseJavascriptNames = false });
this.webView.Address = "网站地址";
从你的代码中可以看出,你使用的是 CefSharp 版本49,而现在的最新版本是90.6.8,所以你需要检查一下是否升级了 Chromium 内核,导致了版本兼容性问题。
另外,也可以尝试在调用 Address 属性前添加一些额外的初始化代码,调用 ChromiumWebBrowser 的 OnInitialized 事件,再尝试加载网页
this.webView = new ChromiumWebBrowser();
this.webView.Initialized += OnInitialized;
WebWindow.Children.Add(webView);
// ...
private void OnInitialized(object sender, EventArgs e)
{
this.webView.Address = "网站地址";
}
这样可能可以解决你的问题。如果问题仍然存在,建议升级 CefSharp 至最新版本,并确保在支持的 Windows 操作系统上。