Condividi tramite


Accesso a membri non esposti nel modello a oggetti documento 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 Metodi
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 FORM in una pagina HTML, in modo da poter eseguire alcune operazioni di pre-elaborazione sui valori FORMprima che l'utente li invii al server. Idealmente, se si ha il controllo sul codice HTML, si definirà l'FORM per avere un attributo ID univoco.

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

Dopo aver caricato questa pagina nel controllo WebBrowser, è possibile utilizzare il metodo GetElementById per recuperare il 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 numerose chiamate a membri non esposti o se i membri non esposti restituiscono altre interfacce non gestite e non inglobate 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.

Digitare 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 posizionate all'interno di una pagina SCRIPT 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 metodo InvokeScript. Se il metodo script restituisce un elemento HTML, è possibile usare un cast per convertire questo risultato restituito in un HtmlElement. Per informazioni dettagliate e codice di esempio, vedere InvokeScript.

Vedere anche