Partilhar via


Como: Acessar o código-fonte HTML no modelo de objeto de documento HTML gerenciado

As propriedades DocumentStream e DocumentText no controle WebBrowser retornam o HTML do documento atual como ele existia quando foi exibido pela primeira vez. No entanto, se você modificar a página usando 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 de data mais up-topara o DOM, você deve chamar a propriedade OuterHtml no elemento HTML.

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

Recuperando a fonte dinâmica com a propriedade OuterHtml

  1. Crie um novo aplicativo do Windows Forms. Comece com um único Forme chame-o de Form1.

  2. Hospede o controle WebBrowser em seu aplicativo Windows Forms e nomeie-o WebBrowser1. Para obter mais informações, consulte Como adicionar recursos do navegador da Web a um aplicativo do Windows Forms.

  3. Crie um segundo Form na sua aplicação chamado CodeForm.

  4. Adicione um controle RichTextBox a CodeForm e defina sua propriedade Dock como Fill.

  5. Crie uma propriedade pública em CodeForm chamada Code.

    public string Code
    {
        get
        {
            if (richTextBox1.Text != null)
            {
                return (richTextBox1.Text);
            }
            else
            {
                return ("");
            }
        }
        set
        {
            richTextBox1.Text = value;
        }
    }
    
    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
    
  6. Adicione um controle Button chamado Button1 ao seu Forme monitore o evento Click. Para obter detalhes sobre o monitoramento de eventos, consulte Events.

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

Programação robusta

Sempre teste o valor de Document antes de tentar recuperá-lo. Se a página atual não tiver terminado de carregar, Document ou um ou mais de seus objetos filho poderão não estar inicializados.

Ver também