Dela via


Anvisningar: Få åtkomst till HTML-källan i den hanterade HTML-dokumentobjektmodellen

Egenskaperna DocumentStream och DocumentTextWebBrowser-kontrollen returnerar HTML-koden för det aktuella dokumentet som det fanns när det först visades. Men om du ändrar sidan med hjälp av metod- och egenskapsanrop som AppendChild och InnerHtmlvisas inte dessa ändringar när du anropar DocumentStream och DocumentText. För att få den mest up-to-date HTML-källan för DOM måste du anropa egenskapen OuterHtml på HTML-elementet.

Följande procedur visar hur du hämtar den dynamiska källan och visar den i en separat snabbmeny.

Hämtar den dynamiska källan med egenskapen OuterHtml

  1. Skapa ett nytt Windows Forms-program. Börja med en enda Formoch kalla den Form1.

  2. Använd WebBrowser-kontrollen i din Windows Forms-applikation och ge den namnet WebBrowser1. Mer information finns i How to: Add Web Browser Capabilities to a Windows Forms Application.

  3. Skapa en andra Form i din applikation kallad CodeForm.

  4. Lägg till en RichTextBox-kontroll i CodeForm och ange dess egenskap Dock till Fill.

  5. Skapa en offentlig egenskap på CodeForm med namnet 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. Lägg till en Button-kontroll med namnet Button1 i din Formoch övervaka för händelsen Click. Mer information om övervakningshändelser finns i Händelser.

  7. Lägg till följande kod i händelsehanteraren för 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
    

Robust Programmering

Testa alltid värdet för Document innan du försöker hämta det. Om den aktuella sidan inte har lästs in kan det hända att Document eller ett eller flera av dess underordnade objekt inte initieras.

Se även