Практическое руководство. Доступ к исходному коду HTML с использованием управляемой объектной модели документов HTML
Обновлен: Ноябрь 2007
Свойства DocumentStream и DocumentText элемента управления WebBrowser возвращают HTML-код текущего документа в том виде, в каком он существовал при первом отображении. Однако если изменить страницу с помощью вызовов методов и свойств, таких как AppendChild и InnerHtml, эти изменения не будут отображаться при вызове DocumentStream и DocumentText. Для получения наиболее свежего HTML-кода для DOM необходимо вызвать свойство OuterHtml элемента HTML.
Следующая процедура демонстрирует извлечение динамического исходного кода и отображение его в отдельном контекстном меню.
Извлечение динамического исходного кода с помощью свойства OuterHtml
Создайте новое приложение Windows Forms. Создайте одну форму Form, назовите ее Form1.
Разместите элемент управления WebBrowser в приложении Windows Forms и назовите его WebBrowser1. Дополнительные сведения см. в разделе Практическое руководство. Добавление функциональности веб-обозревателя в приложения Windows Forms.
Создайте вторую форму Form в приложении и назовите ее CodeForm.
Добавьте элемент управления RichTextBox в форму CodeForm и установите свойству Dock значение Fill.
Создайте в форме CodeForm открытое свойство под названием Code.
Public Property Code() As String Get If (RichTextBox1.Text IsNot Nothing) Then Code = RichTextBox1.Text Else Code = "" End If End Get Set(ByVal value As String) RichTextBox1.Text = value End Set End Property
public string Code { get { if (richTextBox1.Text != null) { return (richTextBox1.Text); } else { return (""); } } set { richTextBox1.Text = value; } }
Добавьте элемент управления Button с названием Button1 в форму Form и следите за событием Click. Сведения об отслеживании событий см. в разделе Прием событий.
В обработчик событий Click добавьте следующий код.
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim elem As HtmlElement If (WebBrowser1.Document IsNot Nothing) Then Dim cf As New CodeForm() Dim elems As HtmlElementCollection = WebBrowser1.Document.GetElementsByTagName("HTML") If (elems.Count = 1) Then elem = elems(0) cf.Code = elem.OuterHtml cf.Show() End If End If End Sub
private void button1_Click(object sender, EventArgs e) { HtmlElement elem; if (webBrowser1.Document != null) { CodeForm cf = new CodeForm(); HtmlElementCollection elems = webBrowser1.Document.GetElementsByTagName("HTML"); if (elems.Count == 1) { elem = elems[0]; cf.Code = elem.OuterHtml; cf.Show(); } } }
Отказоустойчивость
Всегда проверяйте значение Document перед тем, как пытаться извлечь его. Если загрузка текущей страницы не завершена, Document или один из его дочерних объектов может не инициализироваться.
См. также
Ссылки
Общие сведения об элементе управления WebBrowser