Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
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) |
|
Metodi |
|
Eventi (HtmlDocument) |
|
Eventi (HtmlElement) |
|
Eventi (HtmlWindow) |
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 |
|---|---|
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.