Freigeben über


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

Aktualisiert: November 2007

Das verwaltete HTML-Dokumentobjektmodell (DOM) enthält eine Klasse mit dem Namen HtmlElement, die die Eigenschaften, Methoden und Ereignisse verfügbar macht, die alle HTML-Elemente gemeinsam haben. Gelegentlich müssen Sie jedoch auf Member zugreifen, die die verwaltete Schnittstelle nicht direkt verfügbar macht. In diesem Thema werden zwei Methoden zum Zugreifen auf nicht verfügbar gemachte Member untersucht, einschließlich Jscript-Funktionen und VBScript-Funktionen, die innerhalb einer Webseite definiert sind.

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

HtmlDocument und HtmlElement stellen vier Methoden bereit, die den Zugriff auf nicht verfügbar gemachte Member ermöglichen. In der folgenden Tabelle werden die verschiedenen Arten und ihre entsprechenden Methoden angezeigt.

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 über ein Element des richtigen zugrunde liegenden Typs verfügen. Angenommen, Sie möchten das Submit-Ereignis eines FORM-Elements auf einer HTML-Seite überwachen, sodass Sie die FORM-Werte teilweise vorab verarbeiten können, bevor der Benutzer sie an den Server übermittelt. Wenn Sie im Idealfall die Kontrolle über die HTML-Seite haben, würden Sie für das FORM ein eindeutiges ID-Attribut definieren.

<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 das FORM zur Laufzeit mithilfe des Arguments form1 abzurufen.

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

Zugreifen auf nicht verwaltete Schnittstellen

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

Die folgende Tabelle zeigt alle nicht verwalteten Schnittstellen, die über das verwaltete HTML-DOM verfügbar gemacht werden. Klicken Sie auf die einzelnen Links, um eine Erklärung zur Verwendung sowie Beispielcode anzuzeigen.

Typ

Nicht verwaltete Schnittstelle

HtmlDocument

DomDocument

HtmlElement

DomElement

HtmlWindow

DomWindow

HtmlHistory

DomHistory

Die einfachste Möglichkeit, die COM-Schnittstellen zu verwenden, besteht darin, in der Anwendung einen Verweis auf die Bibliothek des nicht verwalteten HTML-DOM (MSHTML.dll) hinzuzufügen. .NET Framework 2.0 enthält eine primäre Interop-Assembly, die die nicht verwalteten Aufrufe als verwaltete Methoden verfügbar macht. In früheren Versionen von .NET Framework müssen Sie diesen verwalteten Wrapper selbst generieren. Weitere Informationen über das Hinzufügen eines Verweises zu einem Projekt finden Sie unter Primäre Interop-Assemblys und unter Importieren einer Typbibliothek als Assembly.

Zugreifen auf Skriptfunktionen

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

Sie können alle Skriptfunktionen aufrufen, die Sie mit der InvokeScript-Methode in einer HTML-Seite definieren. Wenn die Skriptmethode ein HTML-Element zurückgibt, können Sie dieses Ergebnis in ein HtmlElement umwandeln. Ausführliche Informationen und Beispielcode finden Sie unter InvokeScript.

Siehe auch

Weitere Ressourcen

Verwenden des verwalteten HTML-Dokumentobjektmodells