我之前现有的 C# Winforms 项目有默认的 WebBrowser 控件。由于它无法加载现代网站,我开始使用 Webview2 控件。
早期的 WebBrowser 控件用于提供 Document 属性; WebView2 控件缺少它。我们如何访问 Document 以及随后 webview2 加载页面的 DOM?
目前我在下面一行收到编译错误:
var _document = webBrowser.Document;
错误信息:
错误 CS1061 WebView2 不包含“文档”的定义,并且找不到接受“WebView2”类型的第一个参数的可访问扩展方法“文档”(您是否缺少 using 指令或程序集引用?)
有关如何解决此问题的任何指示都会有所帮助。
WebView2 控件中没有直接的 DOM 访问 - 与文档的所有交互都必须使用
.ExecuteScriptAsync()
通过脚本代码完成。
string encodedHtml = StringUtils.ToJsonString(html);
string script = "window.document.write(" + encodedHtml + ")";
try
{
await WebView.ExecuteScriptAsync(script);
}
catch(Exception ex)
{
this.LastException = ex;
}
在尝试与之交互之前,您还必须确保文档已加载。您可以执行此操作,但拦截
WebBrowser.CoreWebView2.DOMContentLoaded
并将代码放入其中或设置一个标志以让您知道您可以开始与文档交互。