Compartilhar via


Como: Acessar a fonte de HTML no modelo de objeto gerenciado do documento HTML

O DocumentStream e DocumentText Propriedades de WebBrowser controle retornar o HTML do documento atual como ele existia quando exibido pela primeira vez. No entanto, se você modificar a página usando as chamadas de método e propriedade, como AppendChild e InnerHtml, essas alterações não aparecerão quando você chamar DocumentStream e DocumentText. Para obter o código-fonte HTML mais recente para o DOM, você deve chamar o OuterHtml a propriedade no elemento HTML.

O procedimento a seguir mostra como recuperar a fonte dinâmica e exibi-lo em um menu de atalho separado.

Recuperando a fonte dinâmica com a propriedade OuterHtml

  1. Criar um novo aplicativo de Formulários do Windows. Iniciar com um único Forme chamá-la Form1.

  2. Host de WebBrowser de controle em seu aplicativo Windows Forms e denomine WebBrowser1. Para obter mais informações, consulte Como: Adicionar recursos do navegador da Web para um aplicativo do Windows Forms.

  3. Criar uma segunda Form em seu aplicativo chamado CodeForm.

  4. Adicionar um RichTextBox o controle para CodeForm e defina seu Dock propriedade para preencher.

  5. Criar uma propriedade pública em CodeForm chamado 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;
                }
            }
    
  6. Adicionar um Button controle chamado Button1 para seu Forme monitorar o Click de evento. Para obter detalhes sobre o monitoramento de eventos, consulte Consumindo Eventos.

  7. Adicione o seguinte código para o manipulador de eventos 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();
                    }
                }
            }
    

Programação robusta

Sempre teste o valor de Document antes de tentar recuperar o proprietário. Se a página atual não estiver concluída, carregamento de Document ou um ou mais dos seus objetos filho não podem ser inicializado.

Consulte também

Referência

Visão geral do controle WebBrowser

Outros recursos

Usando o modelo de objeto gerenciado do documento HTML