如何:访问托管 HTML 文档对象模型
可以从两种类型的应用程序访问托管 HTML 文档对象模型 (DOM):
承载了托管 WebBrowser 控件的 Windows 窗体应用程序 (.exe)。 这两种技术互相补充,WebBrowser 控件向用户显示页面,HTML DOM 表示文档的逻辑结构。
在 Internet Explorer 内承载的 Windows 窗体 UserControl。 您可以访问表示承载您的 UserControl 的页面的 HTML DOM,以更改文档结构或打开模式对话框(还有很多其他可能的操作)。
从 Windows 窗体应用程序访问 DOM
在 Windows 窗体应用程序内部承载 WebBrowser 控件,并监视 DocumentCompleted 事件。 有关承载控件和监视事件的详细信息,请参见使用事件。
通过访问 WebBrowser 控件的 Document 属性来从 HtmlDocument 中检索当前页。
从在 Internet Explorer 中承载的 UserControl 访问 DOM
从 UserControl 类创建您自己的自定义派生类。 有关更多信息,请参见如何:创作复合控件。
将下面的代码放置在您的 UserControl 的 Load 事件处理程序中:
Private Sub UserControl1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
If (Me.Site IsNot Nothing) Then
Dim Doc As HtmlDocument = CType(Me.Site.GetService(Type.GetType("System.Windows.Forms.HtmlDocument")), HtmlDocument)
End If
End Sub
HtmlDocument doc = null;
private void UserControl1_Load(object sender, EventArgs e)
{
if (this.Site != null)
{
doc = (HtmlDocument)this.Site.GetService(typeof(HtmlDocument));
}
}
可靠编程
- 通过 WebBrowser 控件使用 DOM 时,总是应等到 DocumentCompleted 事件发生之后,再尝试访问 WebBrowser 控件的 Document 属性。 加载整个文档之后会引发 DocumentCompleted 事件;如果您在此之前用过 DOM,则有导致应用程序中出现运行时异常的风险。
安全性
- 您的应用程序或 UserControl 将需要完全信任,才能访问托管 HTML DOM。 如果使用 ClickOnce 部署 Windows 窗体应用程序,则可以使用“权限提升”或“受信任的应用程序部署”来请求完全信任;有关详细信息,请参见 保护 ClickOnce 应用程序。