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

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 qui permettent 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)
Properties (HtmlElement) GetAttribute

SetAttribute
Méthodes 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 sur une FORM page HTML afin de pouvoir effectuer un prétraitement sur les FORMvaleurs de l’utilisateur avant de les envoyer au serveur. Dans l’idéal, si vous contrôlez le code HTML, vous devez définir l’attribut FORM pour avoir un attribut unique ID .

<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 WebBrowser contrôle, vous pouvez utiliser la GetElementById méthode pour récupérer le moment de l’exécution FORM à l’aide form1 de l’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 SCRIPT page de 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 InvokeScript méthode. Si la méthode de script retourne un élément HTML, vous pouvez utiliser un cast pour convertir ce résultat de retour en un HtmlElement. Pour plus d’informations et pour obtenir des exemples de code, consultez InvokeScript.

Voir aussi