WebBrowser: Previnindo múltiplas chamadas do evento DocumentCompleted

Se você usa, ou já usou, o controle WebBrowser deve ter percebido que às vezes o evento DocumentCompleted é invocado várias vezes.

Mas, por que isto acontece? Explicarei:

Uma página web pode conter Frames e esses frames possuem um evento OnLoad e o evento Completed respectivo. Aí, cada vez que o carregamento de um frame é completado, o evento DocumentCompleted do WebBrowser é chamado, gerando as múltiplas chamadas.

Mas não se preocupe, existe uma forma de resolver isso. Veja como é simples:

VB.NET:

Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
        If e.Url = WebBrowser1.Url Then 'Verifica se a url é a de um Frame ou a url da página.
            'Aqui o código que você quer executar quando a página estiver totalmente carregada
        End If
End Sub

C#

private void WebBrowser1_DocumentCompleted(object sender, WebBrowserDocumentCompletedEventArgs e)
{
	if (e.Url == WebBrowser1.Url) //Verifica se a url é a de um Frame ou a url da página.
   {
		//Aqui o código que você quer executar quando a página estiver totalmente carregada
	}
}

Uma dica simples, mas com certeza muito útil! 😀

Anúncios

8 comentários

  1. Ola, o tópico e realmente muito interessante eu gostei muito do blog ja mr ajudo bastante eu gostaria de saber se existe alguma forma de realizar um processa se a url carregada for uma expecifica: topo

    If web01.url = “https://www.google.com” then
    Web01.document.getelementbyid(“”).Setattribut(“value”,””)
    EndIf

    “Estou escrevenfo pelo celular perdoe qualquer erro.

    1. Olá Abner,
      Se eu entendi direito isso é possível sim, você pode fazer assim:

      Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
              If e.Url = WebBrowser1.Url Then
                       If WebBrowser1.Url.ToString() = "https://www.google.com/" Then
                                'Aqui o código caso a página carregada seja o Google
                       End If
              End If
      End Sub
      
    2. Disculpe mas precisa adicionar alguma referencia para que ele funcione pois aqui jo vb 2010 ele da erro da parte do “span class =” pra frente…

    3. Eu postei o código dentro de um frame para ficar formatado, você tem que acessá-lo de um computador, caso contrário vai ficar bagunçado…

    4. Sim já acessei pelo computador mas continua com o mesmo erro nessa parte do código:

      = “https://www.google.com/” Then

Deixe um comentário :)

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s