Toegang tot niet-uitgelichte leden in het beheerde HTML-documentobjectmodel

Het beheerde HTML Document Object Model (DOM) bevat een klasse met de naam HtmlElement waarmee de eigenschappen, methoden en gebeurtenissen worden weergegeven die alle HTML-elementen gemeen hebben. Soms moet u echter toegang krijgen tot leden die niet rechtstreeks beschikbaar worden gesteld door de beheerde interface. In dit onderwerp worden twee manieren besproken voor toegang tot niet-belichte leden, waaronder JScript- en VBScript-functies die zijn gedefinieerd in een webpagina.

Toegang tot niet-uitgelichte leden via beheerde interfaces

HtmlDocument en HtmlElement vier methoden bieden waarmee toegang tot niet-uitgelichte leden mogelijk is. In de volgende tabel ziet u de typen en de bijbehorende methoden.

Ledentype Methode(en)
Eigenschappen (HtmlElement) GetAttribute

SetAttribute
Methoden InvokeMember
Gebeurtenissen (HtmlDocument) AttachEventHandler

DetachEventHandler
Gebeurtenissen (HtmlElement) AttachEventHandler

DetachEventHandler
Gebeurtenissen (HtmlWindow) AttachEventHandler

DetachEventHandler

Wanneer u deze methoden gebruikt, wordt ervan uitgegaan dat u een element van het juiste onderliggende type hebt. Stel dat u wilt luisteren naar de Submit gebeurtenis van een FORM element op een HTML-pagina, zodat u bepaalde voorverwerking kunt uitvoeren op de waarden van het FORMvoordat de gebruiker deze naar de server verzendt. Als u controle over de HTML hebt, zou u FORM zo definiëren dat het een uniek ID kenmerk heeft.

<HTML>

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

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

</HTML>

Nadat u deze pagina in het besturingselement WebBrowser hebt geladen, kunt u de methode GetElementById gebruiken om de FORM tijdens runtime op te halen met behulp van form1 als argument.

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

Toegang tot niet-beheerde interfaces

U kunt ook toegang krijgen tot niet-uitgelichte leden op de beheerde HTML DOM met behulp van de COM-interfaces (Unmanaged Component Object Model) die door elke DOM-klasse worden weergegeven. Dit wordt aanbevolen als u meerdere aanroepen moet uitvoeren voor niet-belichte leden of als de niet-belichte leden andere niet-beheerde interfaces retourneren die niet zijn verpakt door de beheerde HTML DOM.

In de volgende tabel ziet u alle niet-beheerde interfaces die worden weergegeven via de beheerde HTML DOM. Klik op elke koppeling voor een uitleg van het gebruik en bijvoorbeeld code.

Typologie Onbeheerde interface
HtmlDocument DomDocument
HtmlElement DomElement
HtmlWindow DomWindow
HtmlHistory DomHistory

De eenvoudigste manier om de COM-interfaces te gebruiken, is door een verwijzing toe te voegen naar de niet-beheerde HTML DOM-bibliotheek (MSHTML.dll) van uw toepassing, hoewel dit niet wordt ondersteund.

Toegang tot scriptfuncties

Een HTML-pagina kan een of meer functies definiëren met behulp van een scripttaal zoals JScript of VBScript. Deze functies worden in een SCRIPT pagina op de pagina geplaatst en kunnen op aanvraag worden uitgevoerd of als reactie op een gebeurtenis in de DOM.

U kunt alle scriptfuncties aanroepen die u op een HTML-pagina definieert met behulp van de methode InvokeScript. Als de scriptmethode een HTML-element retourneert, kunt u een cast gebruiken om dit retourresultaat te converteren naar een HtmlElement. Zie InvokeScriptvoor meer informatie en voorbeeldcode.

Zie ook