Partager via


Accès aux membres non exposés sur le modèle objet de document HTML géré

Le dom (Document Object Model) HTML managé contient une classe appelée HtmlElement qui expose les propriétés, méthodes et événements que tous les éléments HTML ont en commun. Toutefois, vous devrez parfois accéder aux membres que l’interface managée n’expose pas directement. Cette rubrique examine deux façons d’accéder aux membres non exposés, notamment les fonctions JScript et VBScript définies à l’intérieur d’une page Web.

Accès à des membres non exposés via des interfaces managées

HtmlDocument et HtmlElement fournissent quatre méthodes permettant d’accéder aux membres non exposés. Le tableau suivant présente les types et leurs méthodes correspondantes.

Type de membre Méthode(s)
Propriétés (HtmlElement) GetAttribute

SetAttribute
Méthode InvokeMember
Événements (HtmlDocument) AttachEventHandler

DetachEventHandler
Événements (HtmlElement) AttachEventHandler

DetachEventHandler
Événements (HtmlWindow) AttachEventHandler

DetachEventHandler

Lorsque vous utilisez ces méthodes, il est supposé que vous disposez d’un élément du type sous-jacent correct. Supposons que vous souhaitez écouter l’événement Submit d’un élément FORM sur une page HTML, afin de pouvoir effectuer un prétraitement sur les valeurs du FORMavant que l’utilisateur ne les envoie au serveur. Dans l’idéal, si vous contrôlez le code HTML, vous définissez la FORM pour avoir un attribut ID unique.

<HTML>  
  
    <HEAD>  
        <TITLE>Form Page</TITLE>  
    </HEAD>  
  
    <BODY>  
        <FORM ID="form1">  
             ... form fields defined here ...  
        </FORM>  
    </BODY>  
  
</HTML>  

Après avoir chargé cette page dans le contrôle WebBrowser, vous pouvez utiliser la méthode GetElementById pour récupérer le FORM au moment de l’exécution à l’aide de form1 comme argument.

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

Accès aux interfaces non managées

Vous pouvez également accéder aux membres non exposés sur le DOM HTML managé à l’aide des interfaces COM (Component Object Model) non managées exposées par chaque classe DOM. Cela est recommandé si vous devez effectuer plusieurs appels contre des membres non exposés, ou si les membres non exposés retournent d’autres interfaces non managées non encapsulées par le DOM HTML managé.

Le tableau suivant présente toutes les interfaces non managées exposées via le DOM HTML managé. Cliquez sur chaque lien pour obtenir une explication de son utilisation et par exemple du code.

Type Interface non managée
HtmlDocument DomDocument
HtmlElement DomElement
HtmlWindow DomWindow
HtmlHistory DomHistory

Le moyen le plus simple d’utiliser les interfaces COM consiste à ajouter une référence à la bibliothèque DOM HTML non managée (MSHTML.dll) de votre application, bien qu’elle ne soit pas prise en charge.

Accès aux fonctions de script

Une page HTML peut définir une ou plusieurs fonctions à l’aide d’un langage de script tel que JScript ou VBScript. Ces fonctions sont placées à l’intérieur d’une page de SCRIPT dans la page et peuvent être exécutées à la demande ou en réponse à un événement sur le DOM.

Vous pouvez appeler toutes les fonctions de script que vous définissez dans une page HTML à l’aide de la méthode InvokeScript. Si la méthode de script retourne un élément HTML, vous pouvez utiliser un cast pour convertir ce résultat de retour en HtmlElement. Pour plus d’informations et pour obtenir des exemples de code, consultez InvokeScript.

Voir aussi