Inquiridor
Página totalmente carregada

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.
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/- Editado Vitor Mendes domingo, 31 de março de 2013 15: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 :DVitor Mendes | Seu feedback é muito importante para todos!
Visite o meu site: http://www.vitormendes.com.br/ -
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!
-
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/ -
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!
-
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. -
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!
-
'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?
- Editado neuron_upheaval quarta-feira, 3 de abril de 2013 21:13
-
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.