Compartilhar via


Acesso a membros não expostos no modelo de objeto gerenciado do documento HTML

O gerenciado HTML documento objeto DOM (modelo) contém uma classe chamada HtmlElement que expõe as propriedades, métodos e eventos que todos os elementos HTML possuem em comum. Às vezes, no entanto, você precisará acessar membros de interface gerenciada não expor diretamente. Este tópico examina duas maneiras para acessar os membros não expostos, incluindo JScript e funções do VBScript definidas dentro de uma página da Web.

Acessando os membros não expostos por meio de Interfaces gerenciadas

HtmlDocumente HtmlElement fornecem quatro métodos que permitem o acesso a membros não exposta. A tabela a seguir mostra os tipos e seus métodos correspondentes.

Tipo de membro

Método (s)

Propriedades (HtmlElement)

GetAttribute

SetAttribute

Métodos

InvokeMember

Eventos (HtmlDocument)

AttachEventHandler

DetachEventHandler

Eventos (HtmlElement)

AttachEventHandler

DetachEventHandler

Eventos (HtmlWindow)

AttachEventHandler

DetachEventHandler

Ao usar esses métodos, presume-se que você tenha um elemento do tipo subjacente correto. Suponha que você deseja ouvir o Submit o evento de um FORM elemento em um HTML da página, para que você possa realizar alguns Pré-processando no FORMdo valores antes do usuário envia-los para o servidor. O ideal é que, se você tiver controle sobre o HTML, você definiria a FORM ter um único ID atributo.

<HTML>
    
    <HEAD>
        <TITLE>Form Page</TITLE>
    </HEAD>

    <BODY>
        <FORM ID="form1">
             ... form fields defined here ...
        </FORM>
    </BODY>

</HTML>

Após você carregar esta página para o WebBrowser controle, você pode usar o GetElementById método para recuperar o FORM em tempo de execução usando form1 como argumento.

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
        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");
                    }
                }
            }
        }

Acessando as Interfaces não gerenciadas

Você também pode acessar membros não expostos no DOM HTML gerenciado usando as interfaces não gerenciadas do modelo de objeto componente (COM) expostas por cada classe de DOM. Isso é recomendado caso você precise fazer várias chamadas contra membros não expostas, ou se os membros não expostos retornam outras interfaces não gerenciadas não delimitados por gerenciado DOM HTML.

A tabela a seguir mostra todas as interfaces não gerenciadas expostas por meio de gerenciado DOM HTML. Clique em cada link para uma explicação sobre seu uso e por exemplo o código.

Tipo

Interface não gerenciada

HtmlDocument

DomDocument

HtmlElement

DomElement

HtmlWindow

DomWindow

HtmlHistory

DomHistory

A maneira mais fácil de usar as interfaces COM é adicionar uma referência à biblioteca do DOM em HTML não gerenciada (Mshtml. dll) do seu aplicativo. .NET Framework 2.0contém um assembly de interoperabilidade primária que expõe as chamadas não gerenciadas como métodos gerenciados; nas versões anteriores da .NET Framework, você precisa gerar esse wrapper gerenciado por você. Para obter mais informações sobre como adicionar uma referência a um projeto, consulte Assemblies de Interoperabilidade Primários e A importação de uma biblioteca de tipos como um Assembly..

Acessar as funções de Script

Uma página HTML pode definir uma ou mais funções usando uma linguagem de script, como JScript ou VBScript. Essas funções são colocadas dentro de um SCRIPT página na página e pode ser executado sob demanda ou em resposta a um evento no DOM.

Você pode chamar quaisquer funções de script, você pode definir em uma página HTML usando o InvokeScript método. Se o método de script retorna um elemento HTML, você pode usar uma conversão para converter esse resultado de retorno para uma HtmlElement. Para detalhes e exemplos de código, consulte InvokeScript.

Consulte também

Outros recursos

Usando o modelo de objeto gerenciado do documento HTML