How to: Access the HTML Source in the Managed HTML Document Object Model
The DocumentStream and DocumentText properties on the WebBrowser control return the HTML of the current document as it existed when it was first displayed. However, if you modify the page using method and property calls such as AppendChild and InnerHtml, these changes will not appear when you call DocumentStream and DocumentText. To obtain the most up-to-date HTML source for the DOM, you must call the OuterHtml property on the HTML element.
The following procedure shows how to retrieve the dynamic source and display it in a separate shortcut menu.
如何在託管HTML 文件物件模型裡訪問 HTML 源碼
WebBrowser控制項的DocumentStream和DocumentText屬性,包含當前文檔的HTML源碼,這些源碼是網頁一開始顯示時留下的。當你對網頁進行了修改,比如用AppendChild方法進行修改或者改變了InnerHtml屬性,這些變化將不會在DocumentStream和DocumentText這兩個屬性裡體現出來,它們仍然是最初的狀態。要獲得最新的HTML原始碼,可以訪問OuterHtml屬性來獲得。
下面的代碼是個樣本:
Retrieving the dynamic source with the OuterHtml property
- Create a new Windows Forms application. Start with a single Form, and call it Form1.
- Host the WebBrowser control in your Windows Forms application, and name it WebBrowser1. For more information, see How to: Add Web Browser Capabilities to a Windows Forms Application.
Create a second Form in your application called CodeForm.
Add a RichTextBox control to CodeForm and set its Dock property to Fill.
Create a public property on CodeForm called Code
public string Code
{
get
{
if (richTextBox1.Text != null)
{
return (richTextBox1.Text);
}
else
{
return ("");
}
}
set
{
richTextBox1.Text = value;
}
}
Add a Button control named Button1 to your Form, and monitor for the Click event. For details on monitoring events, see Consuming Events.
Add the following code to the Click event handler.
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();
}
}
}