Avatar billede segato Nybegynder
27. juli 2006 - 10:37 Der er 11 kommentarer og
1 løsning

WebBrowser readystate

Hvordan sikrer jeg mig at WebBrowser er helt færdig med at loade et site?

            while (webBrowser1.ReadyState != WebBrowserReadyState.Complete || webBrowser1.IsBusy)
            {               
                Application.DoEvents();
            }

Den stump kode virker kun på nogle sites, den virker f.eks. ikke på www.flybillet.dk her returnere koden for hurtigt.
Avatar billede innercitydk Nybegynder
27. juli 2006 - 10:42 #1
Problemet med flybillet.dk er at den først bliver udført, hvorefter en del af indholdet først loades. På disse sider ved jeg ikke rigtig hvad du skal gøre.
Avatar billede innercitydk Nybegynder
27. juli 2006 - 10:45 #2
Du kan måske lave din kode lidt om, f.eks med en thread.sleep der sikrer at alt er loadet inden koden afsluttes.

if(webBrowser1.ReadyState == WebBrowserReadyState.Complete)
{               
  Thread.Sleep(500);
  //Kode der skal afvikles inden kontrollen gives videre til softwaren..
}
Avatar billede mcgoat Nybegynder
27. juli 2006 - 10:54 #3
Jamen, den er jo faktisk færdig med at loade www.flybillet.dk . så kører der bare noget flash der preloader http://www.flybillet.dk/forside/ . Tvivler på man kan komme uden om det
Avatar billede segato Nybegynder
27. juli 2006 - 12:03 #4
Sleep løser ikke problemet man ved jo aldrig hvor lang tid man skal vente, og de gange hvor man ikke behøver vente vil det jo være spild af tid. Jeg er lidt bange for i har i det ikke kan lade sig gøre :(
Avatar billede innercitydk Nybegynder
28. juli 2006 - 11:54 #5
Sleep er spild af tid, men er nok en af de eneste måder det kan lade sig gøre på da sitet jo ikke er loadet færdigt når readystate er complete. Sleep behøver ikke være særlig stor da de fleste sites loader ret hurtigt. mon ikke et sekund eller to er nok. Godt nok er det spild af tid, men umiddelbart ser jeg ikke andre løsninger.
Avatar billede segato Nybegynder
28. juli 2006 - 12:41 #6
Flybillet tager mellem 20-40 sekunder se det kan tage lang tid. Men måske i har ret det bare ikke er muligt. Lader lige tråden kører lidt videre og se om der er andre der har en ide.
Avatar billede twm Nybegynder
28. juli 2006 - 21:59 #7
Kan du ikke bare vente og lytte på urlen:
while ((webBrowser1.ReadyState != WebBrowserReadyState.Complete || webBrowser1.IsBusy) && !webBrowser.Url.Contains("/Availability.aspx"))
{               
  Application.DoEvents();
}

Dermed venter du på at det er den rigtige side der er færdig, hvis det vel og mærke er søgningen du venter på.
(Jeg kan ikke lige huske om Url er en Uri eller en String ;))
Avatar billede innercitydk Nybegynder
28. juli 2006 - 22:17 #8
twm det virker jo kun på flybillet.dk
Avatar billede segato Nybegynder
28. juli 2006 - 22:18 #9
det skal bruges til en scraper. Der også kan scrape andet end flybillet :D
Avatar billede segato Nybegynder
28. juli 2006 - 22:21 #10
Eller nu skal den faktisk ik bruges til flybillet bare et site jeg så havde noget javascript.
Avatar billede twm Nybegynder
28. juli 2006 - 23:58 #11
Ok sorry jeg troede du havde et problem på lige præcis flybillet.dk
Jeg tror ikke der er nogen nem løsning, da siden kan stå og opdatere med XmlHttp i baggrunden(Ajax m.f), så har du slet ikke styr på hvornår ting kører eller ej.

Det kan være du kan få nogle flere event ud af WebBrowser, hvis du tager fat IWebBrowser2 istedet for.
http://www.codeproject.com/csharp/ExtendedWebBrowser.asp

Held og lykke ;)
Avatar billede segato Nybegynder
29. juli 2006 - 08:06 #12
Jeg tror du har helt ret twm. Man kan smide et sleep ind brugeren vælger det kunne være den sidste løsning. Jeg lader lige tråden køre en uge til skal nok vænne tilbage til dit svar hvis der ikke kommer mere.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester