Compartir a través de


Procedimiento para obtener acceso al código fuente HTML en Document Object Model HTML administrado

Las propiedades DocumentStream y DocumentText del control WebBrowser devuelven el HTML del documento actual tal y como existía cuando se mostró por primera vez. Sin embargo, si modifica la página usando llamadas a métodos y propiedades, como AppendChild y InnerHtml, estos cambios no aparecerán cuando llame a DocumentStream y DocumentText. Para obtener el código fuente HTML más actualizado para el DOM, debe llamar a la propiedad OuterHtml del elemento HTML.

El procedimiento siguiente muestra cómo recuperar el código fuente dinámico y mostrarlo en un menú contextual diferente.

Recuperar el código fuente dinámico con la propiedad OuterHtml

  1. Cree una nueva aplicación Windows Forms. Comience con un soloForm y asígnele el nombre Form1.

  2. Hospede el control WebBrowser en su aplicación de Windows Forms y asígnele el nombre WebBrowser1. Para obtener más información, consulte Incorporación de funciones de explorador web a una aplicación de Windows Forms.

  3. Cree un segundo Form en su aplicación llamado CodeForm.

  4. Agregue un control RichTextBox a CodeForm y establezca su propiedad Dock en Fill.

  5. Cree una propiedad pública en CodeForm llamada 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. Agregue un control Button llamado Button1 a Form y supervise el evento Click. Para obtener información sobre cómo supervisar eventos, vea Eventos.

  7. Agregue el código siguiente al controlador 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
    

Programación sólida

Pruebe siempre el valor de Document antes de intentar recuperarlo. Si la página actual no termina de cargarse, puede que Document o alguno de sus objetos secundarios no se haya inicializado.

Consulte también