如何:存取 Managed HTML 文件物件模型中的 HTML 原始檔

在第一次顯示目前的文件時,DocumentStream 控制項的 DocumentTextWebBrowser 屬性會傳回其舊版的 HTML。 您若是使用方法與屬性呼叫 (例如 AppendChildInnerHtml) 修改頁面,這些變更將不會在您呼叫 DocumentStreamDocumentText 時出現。 若要取得 DOM 的最新 HTML 來源,您必須呼叫 HTML 元素的 OuterHtml 屬性。

下列程序示範如何擷取動態來源,以及如何在個別的捷徑功能表中顯示該來源。

擷取具有 OuterHtml 屬性的動態來源

  1. 建立新的 Windows Form 應用程式。 從單 Form 一 開始,並呼叫它 Form1

  2. 在您的 Windows Forms 應用程式中裝載 WebBrowser 控制項,並將它命名為 WebBrowser1 。 如需詳細資訊,請參閱 如何:將網頁瀏覽器功能新增至 Windows Forms 應用程式

  3. 在名為 CodeForm 的應用程式中建立第二個 Form

  4. RichTextBox將 控制項新增至 , CodeForm 並將其 屬性設定 DockFill

  5. 在呼叫 CodeCodeForm 建立公用屬性。

    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. 將名為 Button1Button 控制項新增至 , Form 並監視 Click 事件的控制項。 如需監視事件的詳細資訊,請參閱 事件

  7. 將下列程式碼加入至 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 或其一或多個子物件。

另請參閱