Partager via


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

Mise à jour : novembre 2007

Le modèle DOM (Document Object Model) HTML managé contient une classe appelée HtmlElement, qui expose les propriétés, les méthodes et les événements que tous les éléments HTML ont en commun. Toutefois, vous devrez quelquefois 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, y compris les fonctions JScript et VBScript définies dans une page Web.

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

HtmlDocument et HtmlElement fournissent quatre méthodes qui permettent l'accès aux membres non exposés. Le tableau suivant affiche les types et leurs méthodes correspondantes.

Type de membre

Méthode(s)

Propriétés (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, vous devez posséder un élément du type sous-jacent correct. Supposons que vous souhaitiez écouter l'événement Submit d'un élément FORM figurant dans une page HTML afin de pouvoir exécuter un prétraitement sur les valeurs de FORM avant que l'utilisateur ne les soumette au serveur. Idéalement, si vous contrôlez les données HTML, vous définissez FORM de façon à ce qu'il dispose d'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 FORM au moment de l'exécution en utilisant form1 comme argument.

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");
                    }
                }
            }
        }

Accès aux interfaces non managées

Vous pouvez également accéder aux membres non exposés du modèle DOM HTML managé en utilisant les interfaces COM (Component Object Model) non managées exposées par chaque classe DOM. Cela est recommandé si vous devez effectuer plusieurs appels concernant des membres non exposés ou si les membres non exposés retournent d'autres interfaces non managées, non encapsulées par le modèle DOM HTML managé.

Le tableau suivant affiche toutes les interfaces non managées exposées par l'intermédiaire du modèle DOM HTML managé. Cliquez sur chaque lien pour obtenir une explication de son utilisation et pour afficher un exemple de code.

Type

Interface non managée

HtmlDocument

DomDocument

HtmlElement

DomElement

HtmlWindow

DomWindow

HtmlHistory

DomHistory

La façon la plus simple d'utiliser les interfaces COM consiste à ajouter une référence à la bibliothèque DOM HTML non managée (MSHTML.dll) à partir de votre application. Le .NET Framework 2.0 contient un assembly PIA (Primary Interop Assembly) qui expose les appels non managés en tant que méthodes managées ; dans les versions antérieures du .NET Framework, vous devez générer vous-même ce wrapper managé. Pour plus d'informations sur l'ajout d'une référence à un projet, consultez Assemblys PIA (Primary Interop Assemblies) et Importation d'une bibliothèque de types sous la forme d'un assembly.

Accès aux fonctions de script

Une page HTML peut définir une ou plusieurs fonctions en utilisant un langage de script, tel que JScript ou VBScript. Ces fonctions sont placées dans une page SCRIPT au sein de la page et peuvent être exécutées à la demande ou en réponse à un événement survenu dans le modè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 en un HtmlElement. Pour plus d'informations et pour obtenir un exemple de code, consultez InvokeScript.

Voir aussi

Autres ressources

Utilisation du modèle objet de document HTML managé