在html文档对象模型中,在托管 HTML 文档对象模型中访问未公开成员

本文介绍了如何在托管HTML文档对象模型中访问未公开的成员,包括通过HtmlDocument和HtmlElement的托管接口以及使用非托管COM接口。此外,还详细阐述了如何利用InvokeScript方法调用HTML页面上定义的JScript和VBScript函数。这些技术对于在运行时与HTML元素交互,尤其是处理事件和调用自定义脚本功能至关重要。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在托管 HTML 文档对象模型中访问未公开成员

08/12/2011

本文内容

托管 HTML 文档对象模型 (DOM) 包含一个名为 HtmlElement 的类,该类公开所有 HTML 元素所共同拥有的属性、方法和事件。 不过在某些情况下,您需要访问托管接口不直接公开的成员。 本主题将分析两种访问未公开成员的方法,包括在网页内部定义的 JScript 和 VBScript 函数。

通过托管接口访问未公开的成员

HtmlDocument 和 HtmlElement 提供了四种可以访问未公开成员的方式。 下表显示了各种类型及其相应的方法。

使用这些方法时,假设您有一个具有基础类型恰好合适的元素。 假设您要侦听 HTML 页上的 FORM 元素的 Submit 事件,以便可以在用户向服务器提交 FORM 的值之前先对这些值进行某些预处理。 理想情况下,如果可以控制 HTML,则可以将 FORM 定义为拥有唯一的 ID 特性。

Form Page

... form fields defined here ...

将此页加载到 WebBrowser 控件后,可以将 form1 作为参数使用 GetElementById 方法在运行时检索 FORM。

Private Sub SubmitForm(ByVal FormName As String)

Dim Elems As HtmlElementCollection

Dim Elem As HtmlElement

If (WebBrowser1.Document IsNot Nothing) Then

With WebBrowser1.Document

Elems = .All.GetElementsByName(FormName)

If (Not Elems Is Nothing And Elems.Count > 0) Then

Elem = Elems(0)

If (Elem.TagName.Equals("FORM")) Then

Elem.InvokeMember("Submit")

End If

End If

End With

End If

End Sub

private void SubmitForm(String formName)

{

HtmlElementCollection elems = null;

HtmlElement elem = null;

if (webBrowser1.Document != null)

{

HtmlDocument doc = webBrowser1.Document;

elems = doc.All.GetElementsByName(formName);

if (elems != null && elems.Count > 0)

{

elem = elems[0];

if (elem.TagName.Equals("FORM"))

{

elem.InvokeMember("Submit");

}

}

}

}

访问非托管接口

您还可以使用由每个 DOM 类公开的非托管组件对象模型 (COM) 接口来访问托管 HTML DOM 上的未公开成员。 如果必须多次调用未公开成员,或者未公开成员返回不是由托管 HTML DOM 包装的其他非托管接口,建议使用此方式。

下表显示了通过托管 HTML DOM 公开的所有非托管接口。 单击每个链接可以获取其用法及代码示例的解释。

使用 COM 接口的最简便方法是从应用程序中添加对非托管 HTML DOM 库 (MSHTML.dll) 的引用。 .NET Framework 2.0 包含一个主互操作程序集,该程序集将非托管调用作为托管方法公开;在以前版本的 .NET Framework 中,您必须自己生成此托管包装。 有关添加项目引用的更多信息,请参见主互操作程序集和将类型库当作程序集导入。

访问 Script 函数

通过使用脚本语言(如 JScript 或 VBScript),HTML 页可以定义一个或多个函数。 这些函数均放置在此页中的 SCRIPT 页内,并且可以按需运行或响应 DOM 中的事件。

您可以使用 InvokeScript 方法调用在 HTML 页中定义的任何脚本函数。 如果此脚本方法返回一个 HTML 元素,则可以使用强制转换将此结果转换为 HtmlElement。 有关详细信息及代码示例,请参见 InvokeScript。

请参见

其他资源

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值