Vorgehensweise: Zugreifen auf den HTML-Quellcode im verwalteten HTML-Dokumentobjektmodell
Die DocumentStream-Eigenschaft und die DocumentText-Eigenschaft des WebBrowser-Steuerelements geben den HTML-Code des aktuellen Dokuments zurück, der bei der ersten Anzeige verwendet wurde. Wenn Sie jedoch die Seite mithilfe von Methoden- und Eigenschaftenaufrufen wie AppendChild und InnerHtml ändern, werden diese Änderungen nicht angezeigt, wenn Sie DocumentStream und DocumentText aufrufen. Um die aktuelle HTML-Quelle für das DOM zu erhalten, müssen Sie die OuterHtml-Eigenschaft des HTML-Elements aufrufen.
Im folgenden Verfahren wird gezeigt, wie die dynamische Quelle abgerufen und in einem separaten Kontextmenü angezeigt wird.
Abrufen der dynamischen Quelle mit der OuterHtml-Eigenschaft
Erstellen Sie eine neue Windows Forms-Anwendung. Beginnen Sie mit einem einzelnen Form, und nennen Sie es
Form1
.Hosten Sie das WebBrowser-Steuerelement in der Windows Forms-Anwendung, und nennen Sie es
WebBrowser1
. Weitere Informationen finden Sie unter Vorgehensweise: Hinzufügen von Webbrowserfunktionen zu einer Windows Forms-Anwendung.Erstellen Sie in der Anwendung ein zweites Form mit dem Namen
CodeForm
.Fügen Sie
CodeForm
ein RichTextBox-Steuerelement hinzu, und legen Sie seine Dock-Eigenschaft aufFill
fest.Erstellen Sie für
CodeForm
eine öffentliche Eigenschaft mit dem NamenCode
.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 ein Button-Steuerelement mit dem Namen
Button1
zum Form hinzu, und überwachen Sie es auf das Click-Ereignis. Detaillierte Informationen zum Überwachen von Ereignissen finden Sie unter Ereignisse.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
Stabile Programmierung
Testen Sie immer zuerst den Wert von Document, bevor Sie einen Abruf versuchen. Wenn die aktuelle Seite noch nicht vollständig geladen wurde, kann Document oder ein bzw. mehrere untergeordnete Objekte möglicherweise nicht initialisiert werden.
Weitere Informationen
.NET Desktop feedback