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
.NET Desktop feedback