Partilhar via


Acessando Unexposed membros sobre o modelo de objeto gerenciado do documento HTML

O DOM (gerenciado HTML documento objeto Model) 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 que o gerenciado interface não expõe diretamente.Este tópico examina duas maneiras para acessar membros unexposed, incluindo JScript e funções do VBScript definidas dentro de uma página da Web.

Acessando Unexposed membros por meio de interfaces gerenciadas

HtmlDocument e HtmlElement fornecem quatro métodos que permitem acesso a membros unexposed. 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

Quando você usar esses métodos, presume-se que você tem um elemento do tipo subjacente correto.Suponha que você queira ouvir o Submit evento de um FORM elemento em uma marca HTML de página, para que possa realizar alguns pré-processando sobre o FORM's valores antes do usuário envia para o servidor. O ideal é que você tem controle sobre o HTML, você definiria a FORM para ter um exclusivo 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 no time de execução usando Formulário1 sistema autônomo 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 interfaces não gerenciados

Você também pode acessar membros unexposed sobre o DOM HTML gerenciado usando as interfaces COM (componente objeto Model) não gerenciados expostas por cada classe de DOM.Isso é recomendado se você deve fazer várias chamadas com membros unexposed ou se os membros unexposed retornam outras interfaces não gerenciadas não delimitados por gerenciado HTML DOM.

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

Type (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 HTML DOM não gerenciada (Mshtml.dll) do seu aplicativo..NET Framework 2,0 contém um assembly de interoperabilidade primário que expõe sistema autônomo chamadas não gerenciadas sistema autônomo métodos gerenciados; sistema autônomo versões anteriores dos .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 Importação uma biblioteca de tipos como um assembly.

Acessar funções de script

Uma página HTML pode definir uma ou mais funções usando uma linguagem de scripts sistema autônomo JScript ou VBScript. Essas funções são colocadas dentro de um SCRIPT Na página de página e pode ser executada sob demanda ou em resposta a um evento no DOM.

Você pode chamar qualquer função de script que você define em uma página HTML usando o InvokeScript método. Se o método do script retorna um elemento HTML, você pode usar a projeção para converter esse resultado de retorno para um HtmlElement. Para detalhes e exemplos de código, consulte InvokeScript.

Consulte também

Outros recursos

Usando o modelo de objeto gerenciado do documento HTML