Compartir a través de


Acceso a miembros no expuestos en el modelo de objetos de documento HTML administrado

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