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) |
|
Métodos |
|
Eventos (HtmlDocument) |
|
Eventos (HtmlElement) |
|
Eventos (HtmlWindow) |
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 |
---|---|
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.