Delen via


Procedure: toegang krijgen tot de HTML-bron in het beheerde HTML-documentobjectmodel

De eigenschappen DocumentStream en DocumentText op het besturingselement WebBrowser retourneren de HTML van het huidige document zoals het al bestond toen het voor het eerst werd weergegeven. Als u de pagina echter wijzigt met methode- en eigenschapsoproepen zoals AppendChild en InnerHtml, worden deze wijzigingen niet weergegeven wanneer u DocumentStream en DocumentTextaanroept. Als u de meest up-to-datum HTML-bron voor de DOM wilt verkrijgen, moet u de eigenschap OuterHtml aanroepen op het HTML-element.

In de volgende procedure ziet u hoe u de dynamische bron ophaalt en weergeeft in een afzonderlijk snelmenu.

De dynamische bron ophalen met de eigenschap OuterHtml

  1. Maak een nieuwe Windows Forms-toepassing. Begin met één Formen noem het Form1.

  2. Plaats het WebBrowser element in uw Windows Forms-toepassing en noem het WebBrowser1. Zie How to: Add Web Browser Capabilities to a Windows Forms Applicationvoor meer informatie.

  3. Maak een tweede Form in uw toepassing met de naam CodeForm.

  4. Voeg een besturingselement RichTextBox toe aan CodeForm en stel de eigenschap Dock ervan in op Fill.

  5. Maak een openbare eigenschap op CodeForm met de naam 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. Voeg een Button controle met de naam Button1 toe aan uw Formen wees waakzaam voor de Click gebeurtenis. Zie Gebeurtenissenvoor meer informatie over het bewaken van gebeurtenissen.

  7. Voeg de volgende code toe aan de Click gebeurtenis-handler.

    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
    

Robuuste programmering

Test altijd de waarde van Document voordat u deze probeert op te halen. Als het laden van de huidige pagina niet is voltooid, worden Document of een of meer onderliggende objecten mogelijk niet geïnitialiseerd.

Zie ook