AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi TWebBrowser.ReadyState
Thema durchsuchen
Ansicht
Themen-Optionen

TWebBrowser.ReadyState

Ein Thema von Kamil · begonnen am 25. Okt 2003 · letzter Beitrag vom 26. Okt 2003
Antwort Antwort
Kamil

Registriert seit: 16. Aug 2002
178 Beiträge
 
#1

TWebBrowser.ReadyState

  Alt 25. Okt 2003, 21:46
Hi,
wenn ich einen TWebBrowser auf die Form lege und und eine Seite lade wird die Eigenschaft ReadyState irgendwann READYSTATE_COMPLETE so wie es sich gehört.
Erstelle ich die Komponente jedoch dynamisch und lade eine Seite so erreicht ReadyState höchstens READYSTATE_INTERACTIVE.

Woran liegt das? Was mache ich falsch?
  Mit Zitat antworten Zitat
ArrayOf..

Registriert seit: 7. Sep 2003
50 Beiträge
 
Delphi 7 Personal
 
#2

Re: TWebBrowser.ReadyState

  Alt 25. Okt 2003, 23:27
Also bei mir geht's normal bis zum fWebBrowser.ReadyState = ReadyState_Complete. Woran das bei dir liegen könnte, kann ich dir allerdings nicht sagen.


Äh...,
am Erzeugen kann es doch wohl nicht liegen, oder?

Code:
procedure TForm2.FormCreate(Sender: TObject);
begin
  fWebBrowser := TWebBrowser.Create(form2);
  TOleControl(fWebBrowser).parent := form2;
  fWebBrowser.Align := alClient;
  fWebBrowser.Enabled := true;
  fWebBrowser.Show;
end;
und folgendes war die ButtonClick-Routine:

Code:
procedure TForm1.Button2Click(Sender: TObject);
begin
  form2.fWebBrowser.Navigate('www.whatismyip.com');
  while form2.fWebBrowser.ReadyState < READYSTATE_Complete do Application.ProcessMessages;
  if form2.fWebBrowser.ReadyState = ReadyState_Complete then beep;
end;
MfG

  Mit Zitat antworten Zitat
Kamil

Registriert seit: 16. Aug 2002
178 Beiträge
 
#3

Re: TWebBrowser.ReadyState

  Alt 26. Okt 2003, 01:35
Es wird wohl am Erzeugen liegen.
Ich erzeuge die Komponente mit WB:=TWebBrowser.Create(nil). Sie soll nicht sichtbar sein.
Ich benötige eigentlich das IWebBrowser2 (und das IHTMLDocument2) Interface mit dem ich dann arbeiten kann. Die WebBrowser Komponente wird also indirekt verwendet (bis auf den Konstruktor und den Destruktor werden keine Methoden von TWebBrowser aufgerufen).

So wie es aussieht muss ich wohl eine unsichtbare Form erstellen auf der dann ein TWebBrowser angezeigt werden kann. (irgendwie scheint WB.Visible:=false den WebBrowser nicht verschwinden zu lassen)

Oder hat jemand nen Tipp für mich?
  Mit Zitat antworten Zitat
ArrayOf..

Registriert seit: 7. Sep 2003
50 Beiträge
 
Delphi 7 Personal
 
#4

Re: TWebBrowser.ReadyState

  Alt 26. Okt 2003, 08:12
Das macht übrigens keinen Unterschied, ob du auf einer nicht ge'show'ten Form einen TWebBrowser 'anzeigst' bzw. installiert hast oder ihn auf einer sichtbaren Form verbirgst (die Methode 'Hide' tut's). Das READYSTATE_COMPLETE=True wird dabei in keinem Fall erreicht (sondern erst dann, wenn du in Fall1 die Form dann doch anzeigst oder in Fall2 den TWebBrowser noch show'st). So wie es wenigstens aussieht bezieht sich dieses ..._COMPLETE auch speziell nur auf den abschließenden Outputprozess des TWebBrowsers. Da INTERACTIVE davor jedoch in jedem Fall TRUE wird ist das aber nicht sooo wichtig, denn INTERACTIVE reicht ja eigentlich auch schon aus, z.B. auch um den HTML-Code auslesen zu können etc.. Und auch das fWebBrowser.Document as IHTMLDocument2 ist dann schon Assigned...
MfG

  Mit Zitat antworten Zitat
Kamil

Registriert seit: 16. Aug 2002
178 Beiträge
 
#5

Re: TWebBrowser.ReadyState

  Alt 26. Okt 2003, 15:11
Das IHTMLDocument2 etwas zugewiesen wurde stimmt, aber die einzelnen Elemente sind nicht vollständig initialisiert. Versuch mal auf IHTMLDocument2.Title zuzugreifen. Bei mir ist es leer wenn ReadyState=READYSTATE_INTERACTIVE
Um nur an den Quelltext zu kommen würde ich nicht TWebBrowser nehmen. Es ist nur sehr angenehm mit IHTMLDocument2 zu arbeiten um auf bestimmte Elemente einer HTML Datei zuzugreifen. (Geht viel schneller als sich mit copy, delete und pos durch den Quelltext zu kämpfen)
  Mit Zitat antworten Zitat
ArrayOf..

Registriert seit: 7. Sep 2003
50 Beiträge
 
Delphi 7 Personal
 
#6

Re: TWebBrowser.ReadyState

  Alt 26. Okt 2003, 17:47
Also bei mir jedenfalls hat auch diese title-Property

TestStr := (form2.fWebBrowser.Document as IHTMLDocument2).title;
TestInt := form2.fWebBrowser.ReadyState;

einen ordentlichen Ergebnis-Wert (im Falle der obigen URL z.B.: 'Your ip is 80.129.35.190 WhatIsMyIP.com') - und das während READYSTATE nur =3, also nur =..INTERACTIVE ist. Bist du sicher, dass bei dir dieses 'title' bei READYSTATE=..COMPLETE (also bei sichtbarem TWebBrowser) denn dann tatsächlich <> '' ist?

Ansonsten muss ich dir allerdings recht geben. Eine sehr komfortable Einrichtung dieses IHTMLDocument2, aber auch wieder nicht für alles absolut essentiell. Denn auch selbst ohne bekommt man z.B. schon die ganzen Frame-URLs, die ganzen Link-Adressen (.item(i).href's) oder z.B. die Picture-Adressen (.item(i).src's) ausgegeben. (Hier war das ReadyState dann allerdings schon bei 4 angekommen, obwohl das Control die ganze Zeit über ebenfalls auf 'hide' war!?). Dagegen jedoch bekommt man die Url-Adressen der Background-Pictures dann aber auch wieder noch nicht einmal mit diesem IHTMLDocument2. Da hilft einem dann nämlich trotzdem wieder nur dieser von dir gerade erwähnte 'Kampf durch den Quelltext mittels copy, delete und pos...

Und bezüglich eines interessanten Quelltextes, den man eventuell auch mal von dieser oder jenen speziellen Page einsehen können möchte. Ich weiß da nämlich nicht ob es mit einem IdHTTP-Client da wirklich einfacher ist, z.B. auch an den Quelltext irgendeines 5ten oder 6ten Frames heranzukommen, der womöglich auch erst noch nach dem Überwinden irgendeiner Hürde aus einzugebendem Nick und Password geliefert wird. Sowas könnte vielleicht sogar auch mittels eines IdHTTP-controls wieder etwas umständlicher werden, oder? (Bin jetzt allerdings auch kein IdHTTP-Experte, der die diesbezüglichen Möglichkeiten des Teiles irgendwie besonders gut kennen würde).


(edit: nur zur besseren Lesbarkeit)
MfG

  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:23 Uhr.
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