![]() |
Webbrowser warten bis fertig geladen, dann code weiter!
Hallo zusammen
Bin zur zeit ein wenig am verzweifel. Ich schreib gerade en Prog und komme einfach nicht weiter. Mein Problem ist es, wenn ich in einer Prozedur eine URl im Webbrowser aufrufe und danach sofort eine Abfrage auf eine Textbox mache kommt immer ein Fehler, weil der Browser die URL noch nicht fertiggeladen hat. code: WebBrowser2.Navigate('http://www.temporaryinbox.com/'); New_INBOXEMAIL := WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('inbox').value; Wie ihr seht, will ich eine neue Email von Temporaryinbox haben. Wie bekomme ich eine Pause zwischen den beiden Codezeilen, sodass der Browaser vollständig geladen ist und dann erst die Emailadresse geholt wird? Besten Dank schonmal für all eure Mühen! |
Re: Webbrowser warten bis fertig geladen, dann code weiter!
der webbrowser hat ein event das nennt sich "ondocumentcomplete"!! schau dir das mal an, das sollte dir weiter helfen^^
|
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Ich benutze den WebBrowser zwar nicht, aber AFAIK hat er doch ein Ereignis OnDocumentComplete oder so ähnlich ;)
P.S.: Gruß nach Soest vom einem Ex-Neheimer :-) |
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Das habe ich mir schon angeschaut!
Aber wie soll mir das zwischen den beiden Codezeilen helfen? Muss ja irgendwie eine Pause, von wegen "DocumentComplete", dann erst die Email auslesen rein. Auch schöne Grüße aus Soest zurück! |
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Im ButtonClick (oder wo es auch steht) das Navigate rein, der Rest ins OnDocumentComplete.
|
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Da gebe ich Dir recht.
Wohl noch vergessen zu schreiben, das nachdem er die Emailadresse geholt hat, eine neue Seite aufgerufen wird und dann da Daten eingiebt und so weiter. |
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Meinst Du damit, dass er die DocumentComplete-Methode nur einmalig bei der "EMail-Holen-URI" ausführen soll? Das würde ich ganz banal über ein privates Flag lösen.
|
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Glaube ich verdeutliche nochmal mein Prob!
Als erstes läd er dir URL im browser WebBrowser2.Navigate('http://www.temporaryinbox.com/'); dann liest er die Textbox im browser aus (hier die neue Emailadresse) New_INBOXEMAIL := WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('inbox').value; dann soll er eine neue Seite ansteuern WebBrowser2.Navigate('http://neueseite.de'); ein paar Eingabe in dieser Seite machen: WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('Name').value := Name WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('Kennwort').value := Kennwort WebBrowser1.OleObject.document.forms.item(0).eleme nts.item('Email').value := New_INBOXEMAIL das Formular abschicken. So, mein Problem ist es, wenn ich den Webbrowser mit der URL fütter, ist er noch garnicht fertiggeladen, wenn er schon die nächste Zeile Code ausführen will, indem er ein Eingabefeld ausliest. Er soll theoretisch erst die neue Zeile Code ausführen, wenn die DocumentComplete-Methode durchlaufen wurde (Die Seite fertig geladen ist). und das dann so weiter, weiter weiter!!! was nun ein privates Flöag ist, weiß ich leider nicht! Hofffe jetzt kam es besser rüber. |
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Ich hatte das schon so verstanden. Versuch es mal so:
-Du definierst Dir eine Boolean-Variable im private-Abschnitt Deines Formulars (nennen wir sie mal "FirstRun"). -Diese Variable setzt Du auf true, bevor Du die erste Seite im WebBrowser aufrufst.
Delphi-Quellcode:
Im OnDocumentComplete machst Du Folgendes:
FirstRun := true;
WebBrowser2.Navigate('http://www.temporaryinbox.com/');
Delphi-Quellcode:
Getippt und nicht getestet.
if FirstRun then //erste Seite aufgerufen
begin New_INBOXEMAIL := WebBrowser1.OleObject.document.forms.item(0).elements.item('inbox').value; WebBrowser2.Navigate('http://neueseite.de'); end else //zweite Seite aufgerufen begin WebBrowser1.OleObject.document.forms.item(0).elements.item('Name').value := Name; WebBrowser1.OleObject.document.forms.item(0).elements.item('Kennwort').value := Kennwort; WebBrowser1.OleObject.document.forms.item(0).elements.item('Email').value := New_INBOXEMAIL; end; FirstRun := false; //wenn wir hier ankommen, war die erste Seite auf jeden Fall schon einmal geladen |
Re: Webbrowser warten bis fertig geladen, dann code weiter!
Ich denke so werde ich es mal machen!
werde aber auf einen integer zurückgreifen, da noch mehr aufrufe von unterschiedlichen Seiten erfolgen müssen. zur Zeit habe ich 4 Timer benutzt, die sich nacheinander freischalten in 5 Sekundentakt. Nicht sauber aber geht. Trotzdem ist deine ein wenig sauberer :) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz