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
Cree una nueva aplicación Windows Forms. Comience con un soloForm y asígnele el nombre
Form1
.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.Cree un segundo Form en su aplicación llamado
CodeForm
.Agregue un control RichTextBox a
CodeForm
y establezca su propiedad Dock enFill
.Cree una propiedad pública en
CodeForm
llamadaCode
.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
Agregue un control Button llamado
Button1
a Form y supervise el evento Click. Para obtener información sobre cómo supervisar eventos, vea Eventos.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
.NET Desktop feedback