Для меня работает следующий код.Ответы @Akash и @Mikko поставили меня на правильный путь, но у меня все еще были некоторые проблемы с несколькими веб-сайтами.Насколько я понимаю, проблема в том, что событие Navigated возникает, когда компонент WebBrowser
начинает получать данные с удаленного сервера.Таким образом, объект DOM еще не завершен, поэтому вызов document.title
приводит к ошибке.Так что я просто повторяюсь через несколько миллисекунд, пока не получу название.Эта «петля» никогда не повторялась более 3 раз на любом веб-сайте, который я тестировал, и каждый раз безупречно приносил мне название.
private void webBrowser1_Navigated(object sender, System.Windows.Navigation.NavigationEventArgs e)
{
ThreadPool.QueueUserWorkItem(UpdateText);
}
private void UpdateText(object o)
{
Thread.Sleep(100);
Dispatcher.BeginInvoke(() =>
{
try
{
textBlock1.Text = webBrowser1.InvokeScript("eval", "document.title").ToString();
}
catch (SystemException)
{
ThreadPool.QueueUserWorkItem(UpdateText);
}
});
}