Udostępnij za pośrednictwem


Porady: uzyskiwanie dostępu do źródła HTML w modelu DOM (Document Object Model) zarządzanych dokumentów HTML

Właściwości DocumentStream i DocumentText w kontrolce WebBrowser zwracają kod HTML bieżącego dokumentu, tak jak istniał, gdy był wyświetlany po raz pierwszy. Jeśli jednak zmodyfikujesz stronę przy użyciu wywołań metod i właściwości, takich jak AppendChild i InnerHtml, te zmiany nie będą wyświetlane podczas wywoływania DocumentStream i DocumentText. Aby uzyskać najbardziej aktualne źródło HTML dla modelu DOM, należy wywołać OuterHtml właściwość w elemecie HTML.

Poniższa procedura przedstawia sposób pobierania źródła dynamicznego i wyświetlania go w osobnym menu skrótów.

Pobieranie dynamicznego źródła za pomocą właściwości OuterHtml

  1. Utwórz nową aplikację Windows Forms. Zacznij od pojedynczego Formelementu i wywołaj go Form1.

  2. Hostuj kontrolkę w aplikacji Windows Forms i nadaj WebBrowser jej WebBrowser1nazwę . Aby uzyskać więcej informacji, zobacz How to: Add Web Browser Capabilities to a Windows Forms Application (Instrukcje: dodawanie funkcji przeglądarki internetowej do aplikacji Windows Forms).

  3. Utwórz sekundę Form w aplikacji o nazwie CodeForm.

  4. Dodaj kontrolkę RichTextBox i CodeForm ustaw jej Dock właściwość na Fill.

  5. Utwórz właściwość publiczną o CodeForm nazwie 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. Dodaj kontrolkę Button o nazwie Button1 do elementu Formi monitoruj zdarzenie Click . Aby uzyskać szczegółowe informacje na temat monitorowania zdarzeń, zobacz Zdarzenia.

  7. Dodaj następujący kod do programu obsługi zdarzeń 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
    

Niezawodne programowanie

Zawsze przetestuj wartość wartości Document przed podjęciem próby jej pobrania. Jeśli bieżąca strona nie zostanie zakończona ładowanie, Document lub co najmniej jeden z jego obiektów podrzędnych może nie zostać zainicjowany.

Zobacz też