Yönetilen HTML Belgesi Nesne Modelinde Gösterilmeyen Öğelere Erişme
Yönetilen HTML Belge Nesne Modeli (DOM), tüm HTML öğelerinin ortak olduğu özellikleri, yöntemleri ve olayları ortaya çıkaran adlı HtmlElement bir sınıf içerir. Ancak, bazen yönetilen arabirimin doğrudan ortaya çıkarmayacak üyelerine erişmesi gerekir. Bu konu başlığında, bir Web sayfasının içinde tanımlanan JScript ve VBScript işlevleri de dahil olmak üzere, gösterlanmamış üyelere erişmek için iki yol incelemektedir.
Yönetilen Arabirimler Aracılığıyla Gösterilmiyor Üyelere Erişme
HtmlDocument ve HtmlElement gösternemeyen üyelere erişimi etkinleştiren dört yöntem sağlar. Aşağıdaki tabloda türleri ve karşılık gelen yöntemleri yer almaktadır.
| Üye Türü | Yöntemler |
|---|---|
| Özellikler ( HtmlElement ) | GetAttribute SetAttribute |
| Yöntemler | InvokeMember |
| Olaylar ( HtmlDocument ) | AttachEventHandler DetachEventHandler |
| Olaylar ( HtmlElement ) | AttachEventHandler DetachEventHandler |
| Olaylar ( HtmlWindow ) | AttachEventHandler DetachEventHandler |
Bu yöntemleri kullanırken, doğru temel alınan türde bir öğeniz olduğu varsayılır. Kullanıcı bunları sunucuya göndermeden önce değerleri üzerinde ön işlem gerçekleştirebilirsiniz, böylece bir HTML sayfasındaki bir öğenin olayı dinlemek SubmitFORM istediğiniz FORM varsayalım. İdeal olarak, HTML üzerinde denetime sahip olursanız, benzersiz bir özniteliği FORM olması için tanımlamanız ID gerekir.
<HTML>
<HEAD>
<TITLE>Form Page</TITLE>
</HEAD>
<BODY>
<FORM ID="form1">
... form fields defined here ...
</FORM>
</BODY>
</HTML>
Bu sayfayı denetime yükledikten sonra, bağımsız değişken olarak kullanarak çalışma WebBrowser zamanında almak için yöntemini GetElementByIdFORMform1 kullanabilirsiniz.
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
Unmanaged Interfaces'e Erişme
Ayrıca, yönetilen HTML DOM'da, her DOM sınıfı tarafından ortaya çıkarlan yönetilemeyen Bileşen Nesne Modeli (COM) arabirimlerini kullanarak da gösterilmiyor üyelere erişebilirsiniz. Bu, gösterilmiyor üyelere karşı çeşitli çağrılar yapmak zorundasanız veya gösterilmiyor üyeler yönetilen HTML DOM tarafından sarmalanmamış diğer yönetilemeyen arabirimleri geri iade ediyorsa önerilir.
Aşağıdaki tabloda, yönetilen HTML DOM aracılığıyla ortaya çıkarıla tüm yönetilemeyen arabirimler gösterir. Kullanımı ve kod gibi bir açıklama için her bağlantıya tıklayın.
| Tür | Unmanaged Interface |
|---|---|
| HtmlDocument | DomDocument |
| HtmlElement | DomElement |
| HtmlWindow | DomWindow |
| HtmlHistory | DomHistory |
COM arabirimlerini kullanmanın en kolay yolu, bu desteklenmese de, uygulamanız tarafından sızan HTML DOM kitaplığına (MSHTML.dll) bir başvuru eklemektir. Daha fazla bilgi için bkz. Bilgi Bankası Makale 934368.
Betik İşlevleri'ne Erişme
Html sayfası, JScript veya VBScript gibi bir betik dili kullanarak bir veya daha JScript işlev tanımlayabilir. Bu işlevler, sayfada bir sayfanın içine yerleştirilir ve isteğe bağlı olarak veya SCRIPT DOM'daki bir olay yanıt olarak çalıştırabilirsiniz.
yöntemini kullanarak bir HTML sayfasında tanımladığınız herhangi bir betik işlevlerini InvokeScript çağırabilirsiniz. Betik yöntemi bir HTML öğesi döndürürse, bu dönüş sonucuna dönüştürmek için bir dönüştürme HtmlElement kullanabilirsiniz. Ayrıntılar ve örnek kod için bkz. InvokeScript .