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
Utwórz nową aplikację Windows Forms. Zacznij od pojedynczego Formelementu i wywołaj go
Form1
.Hostuj kontrolkę w aplikacji Windows Forms i nadaj WebBrowser jej
WebBrowser1
nazwę . 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).Utwórz sekundę Form w aplikacji o nazwie
CodeForm
.Dodaj kontrolkę RichTextBox i
CodeForm
ustaw jej Dock właściwość naFill
.Utwórz właściwość publiczną o
CodeForm
nazwieCode
.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
Dodaj kontrolkę Button o nazwie
Button1
do elementu Formi monitoruj zdarzenie Click . Aby uzyskać szczegółowe informacje na temat monitorowania zdarzeń, zobacz Zdarzenia.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ż
.NET Desktop feedback