Freigeben über


Vorgehensweise: Zugreifen auf die HTML-Quelle im Objektmodell für verwaltete HTML-Dokumente

Die DocumentStream- und DocumentText-Eigenschaften des WebBrowser-Steuerelements geben den HTML-Code des aktuellen Dokuments in dem Zustand zurück, als es zum ersten Mal angezeigt wurde. Wenn Sie die Seite jedoch mithilfe von Methoden- und Eigenschaftsaufrufen wie z. B. AppendChild und InnerHtml ändern, werden diese Änderungen nicht angezeigt, wenn Sie DocumentStream und DocumentText aufrufen. Um die aktuellste up-toHTML-Quelle für das DOM abzurufen, müssen Sie die Eigenschaft OuterHtml des HTML-Elements aufrufen.

Das folgende Verfahren zeigt, wie Sie die dynamische Quelle abrufen und in einem separaten Kontextmenü anzeigen.

Abrufen der dynamischen Quelle mit der OuterHtml-Eigenschaft

  1. Erstellen Sie eine neue Windows Forms-Anwendung. Beginnen Sie mit einem einzelnen Form, und nennen Sie ihn Form1.

  2. Hosten Sie das WebBrowser Steuerelement in Ihrer Windows Forms-Anwendung, und nennen Sie es WebBrowser1. Weitere Informationen finden Sie unter So fügen Sie einer Windows Forms-Anwendung Webbrowser-Funktionen hinzu.

  3. Erstellen Sie eine Sekunde Form in Ihrer Anwendung mit dem Namen CodeForm.

  4. Fügen Sie ein RichTextBox-Steuerelement zu CodeForm hinzu und legen Sie dessen Dock-Eigenschaft auf Fill fest.

  5. Erstellen Sie eine öffentliche Eigenschaft an CodeForm, die Code benannt ist.

    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. Fügen Sie Ihrem Button ein benanntes Button1 Steuerelement hinzu und überwachen Sie das Form-Ereignis. Ausführliche Informationen zu Überwachungsereignissen finden Sie unter "Ereignisse".

  7. Fügen Sie dem Click Ereignishandler den folgenden Code hinzu.

    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
    

Robuste Programmierung

Testen Sie immer den Wert vor Document dem Abrufen. Wenn das Laden der aktuellen Seite nicht abgeschlossen ist, Document oder eines oder mehrere seiner untergeordneten Objekte möglicherweise nicht initialisiert sind.

Siehe auch