![]() |
Warten bis URL komplett geladen ist
Hallo Leute,
mit welchen Anweisungen kann man feststellen, ob eine in TWebBrowser aufgerufene Seite komplett geladen ist? So in der Art:
Code:
mfg
....
WebBrowser.Navigate('http://www.google.de'); repeat untile <WebBrowser ist komplett geladen>; // erst dann führe nachfolgende Befehle aus .... eddy |
Re: Warten bis URL komplett geladen ist
Hallo,
dafür hat TWebBrowser das Event OnNavigateComplete2 |
Re: Warten bis URL komplett geladen ist
Hallo Jens,
danke für den Knochen, manchmal fehlt eben nur ein solcher:
Code:
mfg
// wb : TWebBrowser;
procedure TFTermin.wbNavigateComplete2(Sender: TObject;const pDisp: IDispatch; var URL: OleVariant); const url_google = 'http://www.google.de'; begin cbWeb.Text := lower(wb.OleObject.Document.Url); if (cbWeb.Text = url_google) or (cbWeb.Text = url_google + '/') then begin ShowMessage(cbWeb.Text + ' wurde geladen'); end; end; eddy |
Re: Warten bis URL komplett geladen ist
Hallo Leute,
NavigateComplete2 hat sich doch nicht unbedingt als die richtige Variante ergeben, es gab Fehlermeldungen. Daher habe ich es noch mit DocumentComplete probiert, momentan funktioniert die Eingabe damit auch auf anderen Webseiten. Google habe ich hier nur als Beispiel benutzt, weil das wohl jeder nachvollziehen kann.
Code:
Das Hauptproblem besteht darin zu organisieren, daß nach jeder gewählten Seite erst der komplette Aufbau abgelaufen ist, bevor die nächste Eingabe (Eingabefeld oder Button-Click) erfolgt.
const
url_google = 'http://www.google.de'; var Webform : variant; webinput : string; procedure TFTermin.wbDocumentComplete(Sender: TObject; const pDisp: IDispatch; var URL: OleVariant); begin cbWeb.Text := lower(cbWeb.Text); //wb.OleObject.Document.Url); if (webinput <> '') and ((cbWeb.Text = url_google) or (cbWeb.Text = url_google + '/')) then begin wb.OleObject.Document.Forms.item('f').Elements.item('q').value := webinput; WebForm := wb.OleObject.Document.Forms.item('f'); WebForm.submit; webinput := ''; end; end; //Menüpunkt zum Aufruf der Google-Seite procedure TFTermin.Google1Click(Sender: TObject); begin webinput := 'Delphipraxis'; cbWeb.Text := url_google; wb.Navigate(cbWeb.Text); end; Allgemein (lt. sakura):
Code:
Außerdem muß man aus dem HTML-Quelltext der Fremdseite, die man vom Programm steuern will, die richtigen Bezeichner für Name des Frames/Formulars/Feldes zu ermitteln und das eigene Programm funktioniert nur solange der Pageinhaber diese Bezeichner beibehält.
WebBrowser1.OleObject.Document.Frames.item('Name des Frames').
Document.Forms.item('Name des Formulars'). Elements.item('Name des Feldes').value := 'Irgendetwas' Die globale Variable webinput habe ich eingeführt, damit ich nach einem Click auf den Zurück-Button nicht meine vom Programm generierte Suchabfrage erneut ausführe, sondern auf der Startseite stehen bleibe. Natürlich ist das nicht alles meine Erfindung, sondern aus den beiden obigen Links zusammengebastelt. mfg eddy |
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:44 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