HOW TO:存取 Managed HTML 文件物件模型中的 HTML 原始檔
WebBrowser 控制項上的 DocumentStream 和 DocumentText 屬性可傳回目前文件第一次顯示時所存在的 HTML。 但是,如果使用方法和屬性呼叫 (例如 AppendChild 和 InnerHtml) 來修改頁面,那麼呼叫 DocumentStream 和 DocumentText 時就不會顯示這些變更。 若要取得 DOM 最新的 HTML 原始檔,必須呼叫 HTML 項目上的 OuterHtml 屬性。
下列程序顯示如何擷取動態來源並且在獨立的捷徑功能表中顯示。
以 OuterHtml 屬性擷取動態來源
建立新的 Windows Form 應用程式。 從單一的 Form 開始,並且將它稱為 Form1。
在 Windows Form 應用程式中裝載 WebBrowser 控制項,並且將它命名為 WebBrowser1。 如需詳細資訊,請參閱 HOW TO:將 Web 瀏覽器功能加入至 Windows Form 應用程式。
在應用程式中建立第二個 Form,並且命名為 CodeForm。
將 RichTextBox 控制項加入至 CodeForm,並將該控制項的 Dock 屬性設為 Fill。
在 CodeForm 上建立稱為 Code 的公用屬性。
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
public string Code { get { if (richTextBox1.Text != null) { return (richTextBox1.Text); } else { return (""); } } set { richTextBox1.Text = value; } }
將名為 Button1 的 Button 控制項加入至 Form,並且監視 Click 事件。 如需監視事件的詳細資訊,請參閱使用事件。
將下列程式碼加入至 Click 事件處理常式。
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
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(); } } }
穩固程式設計
在嘗試擷取 Document 值之前,一律先測試此值。 如果目前頁面尚未完成載入,Document 或它的一或多個子物件可能無法初始化。