Yönetilen HTML Belgesi Nesne Modelinde Gösterilmeyen Öğelere Erişme
Yönetilen HTML Belgesi Nesne Modeli (DOM), tüm HTML öğelerinin ortak özelliklerini, yöntemlerini ve olaylarını kullanıma sunan adlı HtmlElement bir sınıf içerir. Ancak bazen yönetilen arabirimin doğrudan kullanıma sunmadığı üyelere erişmeniz gerekir. Bu konu başlığında, Bir Web sayfasının içinde tanımlanan JScript ve VBScript işlevleri de dahil olmak üzere, kullanıma sunulmayan üyelere erişmenin iki yolu incelenmektedir.
Yönetilen Arabirimler Aracılığıyla Kullanıma Sunulmayan Üyelere Erişme
HtmlDocument ve HtmlElement kullanıma sunulmayan üyelere erişim sağlayan dört yöntem sağlar. Aşağıdaki tabloda türleri ve karşılık gelen yöntemleri gösterilmektedir.
Ü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 kullandığınızda, doğru temel türdeki bir öğeye sahip olduğunuz varsayılır. Bir html sayfasındaki bir FORM
öğenin olayını dinlemek Submit
istediğinizi varsayalım; böylece kullanıcı bunları sunucuya göndermeden önce değerleri üzerinde FORM
bazı ön işlemler gerçekleştirebilirsiniz. İdeal olarak, HTML üzerinde denetiminiz varsa, benzersiz ID
bir özniteliği olması için öğesini tanımlarsınızFORM
.
<HTML>
<HEAD>
<TITLE>Form Page</TITLE>
</HEAD>
<BODY>
<FORM ID="form1">
... form fields defined here ...
</FORM>
</BODY>
</HTML>
Bu sayfayı WebBrowser denetime yükledikten sonra, bağımsız değişken olarak kullanarak form1
çalışma zamanında öğesini almak FORM
için yöntemini kullanabilirsinizGetElementById.
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
Yönetilmeyen Arabirimlere Erişme
Ayrıca, her DOM sınıfı tarafından kullanıma sunulan yönetilmeyen Bileşen Nesne Modeli (COM) arabirimlerini kullanarak yönetilen HTML DOM'sinde kullanıma sunulmayan üyelere de erişebilirsiniz. Bu, kullanıma sunulmamış üyelere karşı birkaç çağrı yapmanız gerekiyorsa veya kullanıma sunulmamış üyeler yönetilen HTML DOM tarafından sarmalanmamış diğer yönetilmeyen arabirimleri döndürdüyse önerilir.
Aşağıdaki tabloda, yönetilen HTML DOM aracılığıyla kullanıma sunulan tüm yönetilmeyen arabirimler gösterilmektedir. Kullanımıyla ilgili bir açıklama ve örneğin kod için her bağlantıya tıklayın.
Tür | Yönetilmeyen Arabirim |
---|---|
HtmlDocument | DomDocument |
HtmlElement | DomElement |
HtmlWindow | DomWindow |
HtmlHistory | DomHistory |
COM arabirimlerini kullanmanın en kolay yolu, uygulamanızdan yönetilmeyen HTML DOM kitaplığına (MSHTML.dll) başvuru eklemektir, ancak bu desteklenmez.
Betik İşlevlerine Erişme
HTML sayfası, JScript veya VBScript gibi bir betik dili kullanarak bir veya daha fazla işlev tanımlayabilir. Bu işlevler sayfadaki bir SCRIPT
sayfanın içine yerleştirilir ve isteğe bağlı olarak veya DOM'daki bir olaya yanıt olarak çalıştırılabilir.
yöntemini kullanarak InvokeScript HTML sayfasında tanımladığınız tüm betik işlevlerini çağırabilirsiniz. Betik yöntemi bir HTML öğesi döndürürse, bu dönüş sonucunu öğesine dönüştürmek için bir HtmlElementdönüştürme kullanabilirsiniz. Ayrıntılar ve örnek kod için bkz InvokeScript. .
Ayrıca bkz.
.NET Desktop feedback