Accesso ai membri non esposti del Document Object Model HTML gestito

Aggiornamento: novembre 2007

Il Document Object Model (DOM) HTML gestito contiene una classe denominata HtmlElement che espone le proprietà, i metodi e gli eventi che tutti gli elementi HTML hanno in comune. Talvolta, tuttavia, è necessario accedere a membri non esposti direttamente dall'interfaccia gestita. In questo argomento vengono analizzati due tipi di accesso a membri non esposti, tra cui funzioni JScript e VBScript definite all'interno di una pagina Web.

Accesso a membri non esposti attraverso interfacce gestite

Le classi HtmlDocument e HtmlElement forniscono quattro metodi per l'accesso a membri non esposti. Nella tabella seguente sono illustrati i tipi e i metodi corrispondenti.

Tipo di membro

Metodo/metodi

Proprietà (HtmlElement)

GetAttribute

SetAttribute

Metodi

InvokeMember

Eventi (HtmlDocument)

AttachEventHandler

DetachEventHandler

Eventi (HtmlElement)

AttachEventHandler

DetachEventHandler

Eventi (HtmlWindow)

AttachEventHandler

DetachEventHandler

Quando si utilizzano tali metodi, si presume la presenza di un elemento del tipo sottostante corretto. Si supponga di essere in attesa dell'evento Submit di un elemento FORM in una pagina HTML allo scopo di sottoporre i valori del FORM a pre-elaborazione prima che l'utente li inoltri al server. In una situazione ideale, se si esercita il controllo sull'HTML, si definirebbe per il FORM un attributo ID univoco.

<HTML>
    
    <HEAD>
        <TITLE>Form Page</TITLE>
    </HEAD>

    <BODY>
        <FORM ID="form1">
             ... form fields defined here ...
        </FORM>
    </BODY>

</HTML>

Dopo il caricamento della pagina nel controllo WebBrowser, è possibile utilizzare il metodo GetElementById per recuperare il FORM in fase di esecuzione utilizzando form1 come argomento.

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

Accesso a interfacce non gestite

Per accedere a membri non esposti nel DOM HTML gestito, è inoltre possibile utilizzare le interfacce Component Object Model (COM) non gestite esposte da ogni classe DOM. Tale operazione è consigliabile se è necessario eseguire varie chiamate a membri non esposti o se i membri non esposti restituiscono altre interfacce non gestite di cui non è stato eseguito il wrapping nel DOM HTML gestito.

Nella tabella seguente sono illustrate tutte le interfacce non gestite esposte attraverso il DOM HTML gestito. Fare clic sui collegamenti per visualizzare una spiegazione dell'utilizzo e il codice di esempio.

Tipo

Interfaccia non gestita

HtmlDocument

DomDocument

HtmlElement

DomElement

HtmlWindow

DomWindow

HtmlHistory

DomHistory

Il modo più semplice per utilizzare le interfacce COM consiste nell'aggiungere un riferimento alla libreria di DOM HTML non gestiti (MSHTML.dll) dall'applicazione. In .NET Framework 2.0 è contenuto un assembly di interoperabilità primario che espone le chiamate non gestite come metodi gestiti. Nelle versioni precedenti di .NET Framework tale wrapper gestito deve essere generato manualmente. Per ulteriori informazioni sull'aggiunta di un riferimento a un progetto, vedere Assembly di interoperabilità primari e Importazione di una libreria dei tipi come assembly.

Accesso a funzioni di script

In una pagina HTML possono essere definite una o più funzioni mediante l'utilizzo di un linguaggio di script come JScript o VBScript. Tali funzioni sono inserite all'interno di un tag SCRIPT nella pagina ed è possibile eseguirle su richiesta o in risposta a un evento sul DOM.

È possibile chiamare qualsiasi funzione di script definita in una pagina HTML utilizzando il metodo InvokeScript. Se viene restituito un elemento HTML, è possibile utilizzare un cast per convertire il risultato in una classe HtmlElement. Per informazioni dettagliate e il codice di esempio, vedere InvokeScript.

Vedere anche

Altre risorse

Utilizzare il Document Object Model HTML gestito