我正在尝试使用 WPF WebBrowser Control 进行导航并在加载后获取文档。
导航事件已正确触发(但文档仍不完整)
但是 LoadCompleted 事件从未被触发...
我正在这个瑞士网址上尝试这个https://prestations.vd.ch/pub/actiscamac/101091
上也遇到了同样的行为这是我的简单代码:
using System.Windows;
using System.Windows.Controls;
using System.Windows.Navigation;
namespace AvisServicesCrawler
{
/// <summary>
/// Interaction logic fot MainWindow.xaml
/// </summary>
public partial class MainWindow : Window
{
private static readonly string url = @"https://prestations.vd.ch/pub/actiscamac/101091"; // @"https://www.google.com";
private static readonly WebBrowser browser = new WebBrowser();
public MainWindow()
{
InitializeComponent();
// Register an event handler for the browser.Navigated event fired when browser has navigated to a new document and has begun loading it.
browser.Navigated += browserNavigated;
// Register an event handler for the browser.LoadCompleted event fir ed when document is loaded.
browser.LoadCompleted += browserLoadCompleted;
}
private void goNavigateButton_Click(object sender, RoutedEventArgs e)
{
// Navigate to the desired URL:
browser.Navigate(url);
}
private void browserNavigated(object sender, NavigationEventArgs e)
{
mshtml.HTMLDocument document = (mshtml.HTMLDocument)browser.Document;
}
private void browserLoadCompleted(object sender, NavigationEventArgs e)
{
mshtml.HTMLDocument document = (mshtml.HTMLDocument)browser.Document;
}
}
}
删除静态
browser
字段并将 WebBrowser
添加到 XAML 标记中:
然后,在忽略页面上的脚本错误后,您应该会收到一个
LoadCompleted
事件。
如果您不打算在应用程序中显示网页,则没有理由使用
WebBrowser
。如果您只想解析响应,请使用 HttpClient
或类似的。
另请注意,当涉及到在本机 Windows 应用程序中嵌入现代 Web 内容时,
WebBrowser
控件已有效地被 WebView2 控件取代。