Delphi-PRAXiS
Seite 2 von 4     12 34      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Twebbrowser Problem... (https://www.delphipraxis.net/53144-twebbrowser-problem.html)

alias5000 11. Sep 2005 12:50

Re: Twebbrowser Problem...
 
Warum eigentlich
Delphi-Quellcode:
until Webbrowser1.ReadyState [b]>=[/b] READY_STATE_COMPLETE
???

Machs doch einfach so: überprüfe im Ereignis OnDocumentComplete, ob die GESAMTE Webseite fertiggeladen wurde
(wie das geht siehe diesen Thread: DP:OnDocumentComplete)

Und dann führst du die Prozedure ClickLink darin aus.

Gruß alias5000

heribert 11. Sep 2005 13:06

Re: Twebbrowser Problem...
 
ich hab aber den readystate auch shcon ganz weggelassen (auch shconmal gesagt) und da hätte, wenn die ClickLink ausgeführt worden wäre, nen fehler kommen müssen (die seite wär ja dann noch nicht fertiggeladen und der browser hätte schon versucht den link zu klicken, der noch gar nicht da ist...
aber dem war net so...

//edit: also ich glaub ich hab den fehler, aber ka, ob ich ihn reparieren kann:
die clicklink wird anscheinend doch aufgerufen, ich hab mich da weng verplant... (gibt natürlich keinen fehler, er findet bloß nixx zum draufklicken)
Delphi-Quellcode:
  repeat
  Application.ProcessMessages;
  until WebBrowser1.ReadyState >= READYSTATE_COMPLETE;
das funktioniert anscheinend nur mit navigate, aber nicht mit nem button-submit...
das heißt er führt die clicklink immer direkt nahc dem submit aus und waretet nicht, bsi die neue seite fertiggladen ist.
das mit dem ondocumentcomplete hat auch nicht geklappt...

heribert 24. Sep 2005 08:44

Re: Twebbrowser Problem...
 
weiß denn keiner von euch, was ich da machen soll?

marabu 24. Sep 2005 09:12

Re: Twebbrowser Problem...
 
Hallo heribert,

das sollte so funktionieren:

Delphi-Quellcode:
interface

...

type
  TWebForm = class(TForm)
    ...
  private
    DocumentLoaded: boolean;
    ...
  end;

implementation

...

procedure TWebForm.WebBrowserBeforeNavigate2(Sender: TObject;
  const pDisp: IDispatch; var URL, Flags, TargetFrameName, PostData,
  Headers: OleVariant; var Cancel: WordBool);
begin
  if pDisp = WebBrowser.DefaultInterface then
    DocumentLoaded := false;
end;

procedure TDemoForm.WebBrowserDocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if pDisp = WebBrowser.DefaultInterface then
    DocumentLoaded := true;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  WebBrowser.Navigate('http://mail.yahoo.de');
  repeat
    Application.ProcessMessages;
  until DocumentLoaded;

  WebBrowser.OleObject.document.forms.item(0).elements.item('login').value:='******';
  WebBrowser.OleObject.document.forms.item(0).elements.item('passwd').value:='*****';
  WebBrowser.OleObject.document.forms.item(0).submit;
  repeat
    Application.ProcessMessages;
  until DocumentLoaded;

  ClickLink(WebBrowser, 'Posteingang');
end;
Grüße vom marabu

heribert 24. Sep 2005 09:25

Re: Twebbrowser Problem...
 
wow, ich weiß net wie ich dir danken soll :D klappt perfekt

Andi1982ka 22. Mär 2006 17:28

Re: Twebbrowser Problem...
 
OH schade, hatte genau das selbe problem!! nur hab ich noch so ein java-werbebanner bei mir mit drauf wo dann ebenfalls der status gesetzt wird :( dann kommt er wieder durcheinander und nix geht...


Aber wenn ich die if-Abfrage auf das pDisp = WebBrowser1.DefaultInterface weglasse funktionierts!!! JUHUU :) wofür ist diese abfrage???

marabu 22. Mär 2006 20:23

Re: Twebbrowser Problem...
 
Hallo Andi,

die Erklärung findest du hier: klick

Grüße vom marabu

Andi1982ka 23. Mär 2006 15:37

Re: Twebbrowser Problem...
 
aber ist schon komisch... vor und nach meinem Formular-submit läuft er nicht in diese abfrage rein:
Delphi-Quellcode:
if pDisp = WebBrowser.DefaultInterface then
irgendwas stimmt da nicht...

marabu 23. Mär 2006 18:09

Re: Twebbrowser Problem...
 
Wenn du den URL rausrückst, kann ich vielleicht mehr dazu schreiben.

marabu

Andi1982ka 24. Mär 2006 05:32

Re: Twebbrowser Problem...
 
An diese seite wirst du wohl nicht ran kommen. aber könnte dir den seitenquelltext zukommen lassen. Ich vermute stark dass es an einem Java-Script liegt das einen Werbebanner lädt. bin mir aber nicht sicher.

Ohne diese If-Abfrage auf das pDisp = WebBrowser.DefaultInterface funktioniert es zumindest zu 80% der Fälle! Kann man das pDisp vielleicht in einer Globalen Variable sichern wenn man den Schalter auf "False" setzt? Dann könnte man ja später wieder abfragen dass nur das selbe pDisp wieder "DocumentLoaded := true;" setzen darf.


Alle Zeitangaben in WEZ +1. Es ist jetzt 08:15 Uhr.
Seite 2 von 4     12 34      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz