Show / Hide Table of Contents

Практическое руководство. Доступ к исходному коду HTML с использованием управляемой объектной модели документов HTML

Свойства DocumentStream и DocumentText в элементе управления WebBrowser возвращают HTML текущего документа в том виде, в котором он существовал при первом отображении. Если вы измените страницу, используя вызовы таких методов и свойств, как AppendChild и InnerHtml, то при вызове DocumentStream и DocumentText эти изменения отображаться на будут. Чтобы получить актуальный HTML-источник DOM, необходимо вызвать свойство OuterHtml по элементу HTML.

В следующей процедуре показано, как получить динамический источник и отобразить его в отдельном контекстном меню.

Получение динамического источника с помощью свойства OuterHtml.

  1. Создайте новое приложение Windows Forms. Создайте одну Formи назовите его Form1.

  2. Узел WebBrowser управлять в приложении Windows Forms и назовите его WebBrowser1. Дополнительные сведения см. в разделе Как Добавление функциональности веб-браузера в приложения Windows Forms.

  3. Создайте вторую Form с именем CodeForm.

  4. Добавить RichTextBox управления CodeForm и задайте его Dock свойства Fill.

  5. Создайте общедоступное свойство на CodeForm вызывается Code.

    public string Code
    {
        get
        {
            if (richTextBox1.Text != null)
            {
                return (richTextBox1.Text);
            }
            else
            {
                return ("");
            }
        }
        set
        {
            richTextBox1.Text = value;
        }
    }
    
  6. Добавить Button управления с именем Button1 для вашей Formи отслеживать состояние Click событий. Дополнительные сведения о мониторинге событий см. в разделе события.

  7. Добавьте следующий код в обработчик событий Click.

    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 либо один или несколько дочерних объектов еще не инициализированы.

См. также

  • Использование управляемой объектной модели HTML-документов
  • Общие сведения об элементе управления WebBrowser
Back to top Неофициальная документация по .NET на русском языке. Лицензия: CC-BY 4.0. Основано на документации по .NET с Microsoft Docs
Generated by DocFX