如何:存取 Managed HTML 文件物件模型中的 HTML 原始檔
在第一次顯示目前的文件時,DocumentStream 控制項的 DocumentText 與 WebBrowser 屬性會傳回其舊版的 HTML。 您若是使用方法與屬性呼叫 (例如 AppendChild 與 InnerHtml) 修改頁面,這些變更將不會在您呼叫 DocumentStream 及 DocumentText 時出現。 若要取得 DOM 的最新 HTML 來源,您必須呼叫 HTML 元素的 OuterHtml 屬性。
下列程序示範如何擷取動態來源,以及如何在個別的捷徑功能表中顯示該來源。
擷取具有 OuterHtml 屬性的動態來源
建立新的 Windows Form 應用程式。 先建立單一 Form,並將其命名為
Form1
。在您的 Windows Forms 應用程式上執行 WebBrowser 控制項,並將其命名為
WebBrowser1
。 如需詳細資訊,請參閱操作說明:將網頁瀏覽器功能新增至 Windows Forms 應用程式 (部分機器翻譯)。在應用程式中建立第二個 Form,並將其命名為
CodeForm
。將 RichTextBox 控制項新增至
CodeForm
,並將其 Dock 屬性設為Fill
。建立
CodeForm
的公用屬性,並命名為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
將名稱為
Button1
的 Button 控制項加入您的 Form,並監視 Click 事件。 如需監視事件的詳細資料,請參閱事件。將下列程式碼加入至 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
穩固程式設計
嘗試擷取之前,請務必先測試 Document 的值。 在未完全載入目前的頁面之前,可能不會起始設定 Document 或其一或多個子物件。