共用方式為


存取 Managed HTML 文件物件模型上未公開的成員

Managed HTML 檔案物件模型 (DOM) 包含稱為 HtmlElement 的類別,其會公開所有 HTML 元素通用的屬性、方法和事件。 不過,有時候,您必須存取 Managed 介面不會直接公開的成員。 本主題會檢查存取未公開成員的兩種方式,包括網頁內定義的 JScript 和 VBScript 函式。

透過 Managed 介面存取未公開的成員

HtmlDocumentHtmlElement 提供四種方法,可存取未公開的成員。 下表顯示型別及其對應的方法。

成員類型 方法
屬性 ( HtmlElement GetAttribute

SetAttribute
方法 InvokeMember
事件 ( HtmlDocument AttachEventHandler

DetachEventHandler
事件 ( HtmlElement AttachEventHandler

DetachEventHandler
事件 ( HtmlWindow AttachEventHandler

DetachEventHandler

當您使用這些方法時,假設您有正確基礎類型的元素。 假設您想要接聽 Submit HTML 頁面上元素的事件 FORM ,以便在使用者將其提交至伺服器之前,先對 FORM 的值執行一些前置處理。 在理想情況下,如果您控制 HTML,您會定義 FORM 具有唯 ID 一屬性的 。

<HTML>  
  
    <HEAD>  
        <TITLE>Form Page</TITLE>  
    </HEAD>  
  
    <BODY>  
        <FORM ID="form1">  
             ... form fields defined here ...  
        </FORM>  
    </BODY>  
  
</HTML>  

將此頁面 WebBrowser 載入 控制項之後,您可以使用 GetElementById 方法來擷取 FORM 執行時間使用 form1 作為 引數。

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 介面

您也可以使用每個 DOM 類別公開的 Unmanaged 元件物件模型 (COM) 介面,存取 Managed HTML DOM 上的未公開成員。 如果您必須對未公開的成員進行數次呼叫,或未公開的成員傳回未受管理的 HTML DOM 未包裝的其他 Unmanaged 介面,則建議您這麼做。

下表顯示透過 Managed HTML DOM 公開的所有 Unmanaged 介面。 按一下每個連結,以取得其使用方式的說明,以及範例程式碼。

類型 Unmanaged 介面
HtmlDocument DomDocument
HtmlElement DomElement
HtmlWindow DomWindow
HtmlHistory DomHistory

使用 COM 介面的最簡單方式是從您的應用程式新增 Unmanaged HTML DOM 程式庫 (MSHTML.dll) 的參考,但不受支援。

存取腳本函式

HTML 頁面可以使用 JScript 或 VBScript 等指令碼語言來定義一或多個函式。 這些函式會放在頁面的頁面內 SCRIPT ,而且可以視需要執行或回應 DOM 上的事件。

您可以使用 方法呼叫您在 HTML 頁面中 InvokeScript 定義的任何腳本函式。 如果腳本方法傳回 HTML 專案,您可以使用轉換將此傳回結果 HtmlElement 轉換成 。 如需詳細資料和範例程式碼,請參閱 InvokeScript

另請參閱