none
Página totalmente carregada RRS feed

  • Pergunta

  • Gostaria de saber quando uma página é carregada totalmente no webbrowser. O evento DocumentCompleted não está servindo já que ele é executado várias vezes antes de a página ser totalmente carregada. Estou fazendo um navegador e queria colocar o nome da página na aba. Até aí tudo bem. Acontece que, se a página não foi ainda totalmente carregada, e eu clicar em outra aba enquanto ela está carregando, a aba em que eu cliquei fica com o nome da aba sendo carregada. Daí eu querer saber se existe algum método de saber a finalização do carregamento da página. Agradeço desde já qualquer ajuda.

    Eu uso o Visual Basic 2008.

    quarta-feira, 27 de março de 2013 19:09

Todas as Respostas

  • Hélio,

    Dando uma lida sobre isso, realmente cada documento carregado da pagina dispara este evento (CSS, js e etc). O pessoal comenta de uma técnica  para validar a URL de quem disparou o evento, veja:

    http://stackoverflow.com/questions/2777878/detect-webbrowser-complete-page-loading


    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/


    domingo, 31 de março de 2013 15:26
  • Cara vc pode utilizar jquery.

    //load da página

    $(document).ready(function(){

    //esse é o que vc precisa, página totalmente carregada.

    $(window).load(function(){

    //código

    });

    });

    Abraço!

    segunda-feira, 1 de abril de 2013 12:34
  •  Romy,

    Até daria certo, porem ele esta usando o componente WebBrowser (http://msdn.microsoft.com/pt-br/library/system.windows.forms.webbrowser.aspx) do Windows Form e carregando uma pagina dentro.
    Se tivesse alguma maneira de injetar o javascript, e o JavaScript disparar algo que execute o evento no Windows Forms seria legal :D

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    segunda-feira, 1 de abril de 2013 12:51
  • Sem dúvida é um problema complicado esse. Já li inúmeros textos sobre isso e nenhum dá certo. Esse link que o Vitor Mendes me passou não é em Visual Basic, mas vou tentar adaptá-lo, quem sabe não consigo. De qualquer forma agradeço as respostas e se tiverem alguma possível solução sobre isso postem aqui, por favor, que estarei de olho, rs. Situação chata essa quando entramos em um beco aparentemente sem saída. Um abraço!
    segunda-feira, 1 de abril de 2013 18:15
  • Hélio,

    Você pode usar deste site para transformar código C# para VB.NET:

    http://www.developerfusion.com/tools/convert/csharp-to-vb/

    Vitor Mendes | Seu feedback é muito importante para todos!
    Visite o meu site: http://www.vitormendes.com.br/

    segunda-feira, 1 de abril de 2013 18:47
  • Bastante interessante este conversor, Vitor, mas ainda assim tentei as várias soluções apresentadas e o evento DocumentCompleted continua executando várias vezes e as condições utilizadas dentro dele como solução para o meu caso não funcionaram já que são executadas também mais de uma vez, embora menos!
    terça-feira, 2 de abril de 2013 18:33
  • No evento DocumentCompleted voce testou o estado da página?

    Private Sub webBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) If Me.webBrowser1.ReadyState <> WebBrowserReadyState.Complete Then Exit Sub Else

    ' Documento Carregado End If End Sub



    Washington Luíz | MCP, MCTS
    O Senhor é minha força e somente Nele confio.

    terça-feira, 2 de abril de 2013 21:11
  • Olá Washington, sim, eu já usei esse código dentro do evento, mas o código que vem após o 'Else' continua sendo executado vária vezes, ou seja, ele executa várias vezes enquanto a página está sendo carregado, o que não adianta pois o que quero é que fosse executado uma única vez, aós tudo ser carregado mesmo!
    quarta-feira, 3 de abril de 2013 18:10
  • 'mais acima
    Private m_flagOnce As Boolean = False
    '...
    '...
    '...
    'mais abaixo
    Private Sub webBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs)
        If Me.webBrowser1.ReadyState <> WebBrowserReadyState.Complete Then
            Exit Sub	
        Else
            If Not m_flagOnce Then
                m_flagOnce = True : Call RodaCodigoDaAbaUmaVez
            End If
        End If
    End Sub

    E se você usar uma flag para ter certeza de que seu código foi rodado apenas uma vez?


    quarta-feira, 3 de abril de 2013 21:12
  • Obrigado pela tentativa, mas ainda assim não deu. O código ainda roda umas duas vezes. Já tentei tudo e não consigo fazer que funcione como quero. Eu gostaria que, enquanto carrega  a página em uma aba, a aba em que eu clicar não seja renomeada pela a que está carregando, como acontece nos navegadores.
    segunda-feira, 8 de abril de 2013 17:54