Aracılığıyla paylaş


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 FORMbazı ö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.