Zugreifen auf nicht verfügbar gemachte Member des verwalteten HTML-Dokumentobjektmodells

Das verwaltete Dokumentobjektmodell (DOM) von HTML enthält eine Klasse namens HtmlElement, die die Eigenschaften, Methoden und Ereignisse verfügbar macht, die alle HTML-Elemente gemeinsam haben. Mitunter müssen Sie jedoch auf Member zugreifen, die von der verwalteten Schnittstelle nicht direkt verfügbar gemacht werden. In diesem Thema werden zwei Möglichkeiten für den Zugriff auf nicht verfügbar gemachte Member untersucht, darunter JScript- und VBScript-Funktionen, die innerhalb einer Webseite definiert sind.

Zugreifen auf nicht verfügbar gemachte Member über verwaltete Schnittstellen

HtmlDocument und HtmlElement bieten vier Methoden, die den Zugriff auf nicht verfügbar gemachte Member ermöglichen. Die folgende Tabelle enthält die Typen und ihre entsprechenden Methoden.

Memberart Methode(n)
Eigenschaften (HtmlElement) GetAttribute

SetAttribute
Methoden InvokeMember
Ereignisse (HtmlDocument) AttachEventHandler

DetachEventHandler
Ereignisse (HtmlElement) AttachEventHandler

DetachEventHandler
Ereignisse (HtmlWindow) AttachEventHandler

DetachEventHandler

Wenn Sie diese Methoden verwenden, wird davon ausgegangen, dass Sie ein Element des richtigen zugrunde liegenden Typs haben. Angenommen, Sie möchten auf das Submit-Ereignis eines FORM-Elements auf einer HTML-Seite lauschen, damit Sie die Werte des FORM-Elements verarbeiten können, ehe der Benutzer sie zum Server sendet. Wenn Sie die Kontrolle über den HTML-Code haben, sollten Sie idealerweise das FORM-Attribut so definieren, dass es ein eindeutiges ID-Attribut hat.

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

Nachdem Sie diese Seite in das WebBrowser-Steuerelement geladen haben, können Sie die GetElementById-Methode verwenden, um FORM zur Laufzeit mit form1 als Argument abzurufen.

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

Zugreifen auf nicht verwaltete Schnittstellen

Sie können auch auf nicht verwaltete Member des verwalteten DOM von HTML zugreifen, indem Sie die nicht verwalteten COM-Schnittstellen (Component Object) verwenden, die von jeder DOM-Klasse verfügbar gemacht werden. Dies empfiehlt sich, wenn Sie mehrere Aufrufe in Bezug auf nicht verfügbar gemachte Member machen müssen oder die nicht verfügbar gemachten Member andere nicht verwaltete Schnittstellen zurückgeben, die nicht vom verwalteten DOM von HTML umschlossen sind.

Die folgende Tabelle zeigt alle nicht verwalteten Schnittstellen, die über das verwaltete DOM von HTML verfügbar gemacht werden. Klicken Sie auf die einzelnen Links, um eine Erläuterung der Verwendung und Beispielcode zu erhalten.

type Nicht verwaltete Schnittstelle
HtmlDocument DomDocument
HtmlElement DomElement
HtmlWindow DomWindow
HtmlHistory DomHistory

Der einfachste Weg, die COM-Schnittstellen zu verwenden, ist das Hinzufügen eines Verweises auf die nicht verwaltete DOM-Bibliothek (MSHTML.dll) von HTML in Ihrer Anwendung, obwohl dies nicht unterstützt wird.

Zugreifen auf Skriptfunktionen

Eine HTML-Seite kann eine oder mehrere Funktionen mithilfe einer Skriptsprache wie JScript oder VBScript definieren. Diese Funktionen werden innerhalb einer SCRIPT-Seite auf der Seite platziert und können bei Bedarf oder als Reaktion auf ein Ereignis im DOM ausgeführt werden.

Mit der InvokeScript-Methode können Sie alle Skriptfunktionen aufrufen, die Sie in einer HTML-Seite definieren. Wenn die Skriptmethode ein HTML-Element zurückgibt, können Sie dieses Rückgabeergebnis mithilfe einer Umwandlung in HtmlElement konvertieren. Details und Beispielcode finden Sie unter InvokeScript.

Weitere Informationen