Vorgehensweise: Zugreifen auf die HTML-Quelle im Objektmodell für verwaltete HTML-Dokumente
Die Eigenschaften DocumentStream und DocumentText für das WebBrowser-Steuerelement liefern den HTML-Code des aktuellen Dokuments in ihrer ursprünglichen Form zurück, als es zum ersten Mal angezeigt wurde. Wenn Sie die Seite jedoch mithilfe von Methoden- und Eigenschaftsaufrufen wie AppendChild und InnerHtmländern, werden diese Änderungen nicht angezeigt, wenn Sie DocumentStream und DocumentTextaufrufen. Um die up-to-date-HTML-Quelle für das DOM abzurufen, müssen Sie die OuterHtml-Eigenschaft für das HTML-Element aufrufen.
Das folgende Verfahren zeigt, wie Sie die dynamische Quelle abrufen und in einem separaten Schnellzugriffsmenü anzeigen.
Abrufen der dynamischen Quelle mit der "OuterHtml"-Eigenschaft
Erstellen Sie eine neue Windows Forms-Anwendung. Beginnen Sie mit einem einzelnen Form, und nennen Sie ihn
Form1
.Fügen Sie das WebBrowser-Steuerelement in Ihre Windows Forms-Anwendung ein und nennen Sie es
WebBrowser1
. Weitere Informationen finden Sie unter So fügen Sie einer Windows Forms-Anwendung Webbrowser-Funktionen hinzu.Erstellen Sie in Ihrer Anwendung eine zweite Form mit dem Namen
CodeForm
.Fügen Sie ein Steuerelement RichTextBox zu
CodeForm
hinzu und legen Sie die Eigenschaft Dock aufFill
fest.Erstellen Sie eine öffentliche Eigenschaft für
CodeForm
namensCode
.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
Fügen Sie Ihrem Formein Button-Steuerelement namens
Button1
hinzu, und überwachen Sie das Click-Ereignis. Ausführliche Informationen zur Überwachung von Ereignissen finden Sie unter Ereignisse.Fügen Sie dem Ereignishandler Click 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 von Document, bevor Sie versuchen, ihn abzurufen. Wenn das Laden der aktuellen Seite nicht abgeschlossen ist, werden Document oder mindestens ein untergeordnetes Objekt möglicherweise nicht initialisiert.
Siehe auch
.NET Desktop feedback