Share via


Accesso ai membri non esposti del Document Object Model HTML gestito

Il DOM (Document Object Model) HTML gestito contiene una classe denominata HtmlElement che espone le proprietà, i metodi e gli eventi che tutti gli elementi HTML hanno in comune. In alcuni casi, tuttavia, sarà necessario accedere ai membri che l'interfaccia gestita non espone direttamente. In questo argomento vengono esaminati due modi per accedere a membri non esposti, incluse le funzioni JScript e VBScript definite all'interno di una pagina Web.

Accesso a membri non esposti tramite interfacce gestite

HtmlDocument e HtmlElement forniscono quattro metodi che consentono l'accesso a membri non esposti. Nella tabella seguente vengono illustrati i tipi e i relativi metodi corrispondenti.

Tipo di membro Metodo/i
Proprietà (HtmlElement) GetAttribute

SetAttribute
Metodi InvokeMember
Eventi (HtmlDocument) AttachEventHandler

DetachEventHandler
Eventi (HtmlElement) AttachEventHandler

DetachEventHandler
Eventi (HtmlWindow) AttachEventHandler

DetachEventHandler

Quando si usano questi metodi, si presuppone che sia presente un elemento del tipo sottostante corretto. Si supponga di voler ascoltare l'evento Submit di un elemento in una FORM pagina HTML, in modo da poter eseguire alcune operazioni di pre-elaborazione sui FORMvalori dell'utente prima che l'utente li invii al server. Idealmente, se si ha il controllo sul codice HTML, si definirà per FORM avere un attributo univoco ID .

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

Dopo aver caricato questa pagina nel WebBrowser controllo, è possibile usare il GetElementById metodo per recuperare l'oggetto FORM in fase di esecuzione usando form1 come argomento .

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

Accesso alle interfacce non gestite

È anche possibile accedere ai membri non esposti nel DOM HTML gestito usando le interfacce COM (Component Object Model) non gestite esposte da ogni classe DOM. Questa operazione è consigliata se è necessario effettuare diverse chiamate a membri non esposti o se i membri non esposti restituiscono altre interfacce non gestite non di cui è stato eseguito il wrapping dal DOM HTML gestito.

La tabella seguente mostra tutte le interfacce non gestite esposte tramite il DOM HTML gestito. Fare clic su ogni collegamento per una spiegazione dell'utilizzo e per un codice di esempio.

Tipo Interfaccia non gestita
HtmlDocument DomDocument
HtmlElement DomElement
HtmlWindow DomWindow
HtmlHistory DomHistory

Il modo più semplice per usare le interfacce COM consiste nell'aggiungere un riferimento alla libreria DOM HTML non gestita (MSHTML.dll) dall'applicazione, anche se questa operazione non è supportata.

Accesso alle funzioni script

Una pagina HTML può definire una o più funzioni usando un linguaggio di scripting, ad esempio JScript o VBScript. Queste funzioni vengono inserite all'interno di una SCRIPT pagina nella pagina e possono essere eseguite su richiesta o in risposta a un evento nel DOM.

È possibile chiamare qualsiasi funzione script definita in una pagina HTML usando il InvokeScript metodo . Se il metodo script restituisce un elemento HTML, è possibile usare un cast per convertire questo risultato restituito in un oggetto HtmlElement. Per informazioni dettagliate e codice di esempio, vedere InvokeScript.

Vedi anche