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 .

Ayrıca bkz.