![]() |
Ereignisse von Twebbrowser zu früh!
Hallöchen!
Also ich will, dass ein Element einer Webseite sofort nach dem Laden der Seite angesprochen werden. Allerdings gibt es kein event für den TWebBrowser, der den Zugriff nach dem Kompletten Darstellen der Seite ermöglicht, also bekomme ich natürlich jedesmal eine exeption. Ich könnte mir vorstellen, dass das daran liegt, dass es sich um eine Seite mit frames handelt, und dann die Ereignisse sich alle nur auf den Parent beziehen, welcher natürlich schon geladen ist, wenn die children noch nicht geladen sind. Need Help! Gruß Jan |
Wieso? Denn was ist mit NavigateComplete oder DownloadComplete. All das funktioniert problemlos...
Chris |
Hallo Chakotay1308,
leider nein, wenn ich die Anfrage über einen Buttonklick sende, dann funktioniert sie einwandfrei, aber ondownloadcomplete und onnavigatecomplete resultieren in exeptions. Gruß Jan |
weiss denn da echt keiner was zu? *hoff*
Jan |
Versuchs mal mit dem OnProgresss-Ereignis (dann aber mit den Parametern abfragen, ob fertig)...
Chris |
xcuse me? Erklär mal bitte!
Gruß Jan |
Hi Jan,
wenn du mit der Prozedur vom SwissDelphiCenter benutzst, dann funktioniert die in zwei Fällen nicht:
Delphi-Quellcode:
Dann funktioniert die Operation mit dem OnDocumentComplete-Ereignis wunderbar:
function FillForm(WebBrowser: TWebBrowser; FieldName: string; Value: string): Boolean;
var i, j: Integer; FormItem: Variant; begin Result := False; //no form on document if WebBrowser.OleObject.Document.all.tags('FORM').Length = 0 then Exit; //count forms on document for I := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do begin FormItem := WebBrowser.OleObject.Document.forms.Item(I); for j := 0 to FormItem.Length - 1 do try //when the fieldname is found, try to fill out if (LowerCase(FormItem.Item(j).Name) = LowerCase(FieldName)) or (LowerCase(FormItem.Item(j).Id) = LowerCase(FieldName)) then begin FormItem.Item(j).Value := Value; Result := True; end; except Exit; end; end; end;
Delphi-Quellcode:
(Folgende HTML-Date wurde benutzt.)
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
const pDisp: IDispatch; var URL: OleVariant); begin FillForm(WebBrowser1, 'Test', 'Test'); end; procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('http://localhost/test.html'); end;
Code:
MfG,
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Test</title> </head> <body> <form> <input type="text" id="tEsT"> </form> </body> </html> d3g |
Hallo d3g,
Zitat:
Ich nehme halt wie vorher schon mal erwähnt an, dass das deswegen so ist, weil das Formular in einem Frame ist, kann das sein? Gruß Jan |
Na los leute, da weiss 100% einer rat!! BIIIIITTEEEEE!! Meim komplettes Programm funktioniert schon, bis auf dieses eine Problem.
Wenn ihr mir wenigstens sagen würdet, wie ich überprüfen kann, ob bestimmte Elemente schon existieren, ohne dass ich einen error bekomme, das würde mir vielleicht auch weiterhelfen. Also strengt mal eure Hirne an, und helft mir mal bitte weiter! :] THX!! Jan |
Das Problem hatte ich auch ich hab das alles in nen try - except block geschrieben!
Also die Fehlermeldung wird so lange verhindert bis die Seite dann richtig geladen ist! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 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