Compartir a través de


Cómo: Obtener acceso al origen HTML en el modelo de objetos de documento HTML administrado

Las DocumentStream propiedades y DocumentText del WebBrowser control devuelven el CÓDIGO HTML del documento actual tal como existía cuando se mostraba por primera vez. Sin embargo, si modifica la página mediante llamadas a métodos y propiedades como AppendChild y InnerHtml, estos cambios no aparecerán cuando llame a DocumentStream y DocumentText. Para obtener el origen HTML más up-to-date del DOM, debe llamar a la OuterHtml propiedad en el elemento HTML.

En el procedimiento siguiente se muestra cómo recuperar el origen dinámico y mostrarlo en un menú contextual independiente.

Recuperación del origen dinámico con la propiedad OuterHtml

  1. Cree una nueva aplicación Windows Forms. Comience con un único Formy llámelo 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, vea Cómo: Agregar capacidades de navegador web a una aplicación de Windows Forms.

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

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

  5. Cree una propiedad pública en CodeForm denominada 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 Button control denominado Button1 a Formy supervise el Click evento. Para más información sobre los eventos de supervisión, consulte Eventos.

  7. Agregue el código siguiente al controlador de Click eventos.

    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

Compruebe siempre el valor de Document antes de intentar recuperarlo. Si la página actual no ha terminado de cargarse, Document o es posible que no se inicialice uno o varios de sus objetos secundarios.

Consulte también