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) |
|
Methoden |
|
Ereignisse (HtmlDocument) |
|
Ereignisse (HtmlElement) |
|
Ereignisse (HtmlWindow) |
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 |
---|---|
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.