Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
El modelo de objetos de documento HTML administrado (DOM) contiene una clase denominada HtmlElement que expone las propiedades, los métodos y los eventos que todos los elementos HTML tienen en común. A veces, sin embargo, tendrá que acceder a los miembros que la interfaz administrada no expone directamente. En este tema se examinan dos maneras de acceder a miembros no expuestos, incluidas las funciones de JScript y VBScript definidas dentro de una página web.
Acceso a miembros no expuestos a través de interfaces administradas
HtmlDocument y HtmlElement proporcionan cuatro métodos que permiten el acceso a miembros no expuestos. En la tabla siguiente se muestran los tipos y sus métodos correspondientes.
Tipo de miembro | Métodos |
---|---|
Propiedades (HtmlElement) | GetAttribute SetAttribute |
Métodos | InvokeMember |
Eventos (HtmlDocument) | AttachEventHandler DetachEventHandler |
Eventos (HtmlElement) | AttachEventHandler DetachEventHandler |
Eventos (HtmlWindow) | AttachEventHandler DetachEventHandler |
Cuando se usan estos métodos, se supone que usted tiene un elemento del tipo subyacente correcto. Supongamos que desea escuchar el Submit
evento de un FORM
elemento en una página HTML, para que pueda realizar algún procesamiento previo en los valores del FORM
antes de que el usuario los envíe al servidor. Idealmente, si tiene control sobre el HTML, definiría un atributo único FORM
para ID
.
<HTML>
<HEAD>
<TITLE>Form Page</TITLE>
</HEAD>
<BODY>
<FORM ID="form1">
... form fields defined here ...
</FORM>
</BODY>
</HTML>
Después de cargar esta página en el control WebBrowser, puede usar el método GetElementById para recuperar el FORM
en tiempo de ejecución, utilizando form1
como argumento.
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");
}
}
}
}
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
Acceso a interfaces no administradas
También puede acceder a miembros no expuestos en el DOM HTML administrado mediante las interfaces no administradas del Modelo de objetos de componentes (COM) expuestas por cada clase DOM. Esto se recomienda si debe realizar múltiples llamadas a miembros no visibles, o si estos miembros devuelven otras interfaces no administradas, no encapsuladas por el DOM HTML gestionado.
En la tabla siguiente se muestran todas las interfaces no administradas expuestas a través del DOM HTML administrado. Haga clic en cada vínculo para obtener una explicación de su uso y, por ejemplo, código.
Tipo | Interfaz no administrada |
---|---|
HtmlDocument | DomDocument |
HtmlElement | DomElement |
HtmlWindow | DomWindow |
HtmlHistory | DomHistory |
La manera más fácil de usar las interfaces COM es agregar una referencia a la biblioteca DOM HTML no administrada (MSHTML.dll) de la aplicación, aunque esto no es compatible.
Acceso a funciones de script
Una página HTML puede definir una o varias funciones mediante un lenguaje de scripting como JScript o VBScript. Estas funciones se colocan dentro de una SCRIPT
página de la página y se pueden ejecutar a petición o en respuesta a un evento en el DOM.
Puede llamar a cualquier función de script que defina en una página HTML mediante el InvokeScript método . Si el método de script devuelve un elemento HTML, puede usar un casting para convertir el resultado en un HtmlElement. Para obtener más información y código de ejemplo, vea InvokeScript.
Consulte también
.NET Desktop feedback