Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   TWebbrower und ReadyState (https://www.delphipraxis.net/180825-twebbrower-und-readystate.html)

p80286 20. Jun 2014 10:49

TWebbrower und ReadyState
 
Hallo zusammen,

nachdem ich mir mit Twebbrowser und Frames ein paar graue Haare geholt habe, funktioniert das Laden von Frames so halbwegs.

Mein Problem ist:

Delphi-Quellcode:
form1.WebBrowser1.OleObject.Document.Frames.Item(i).document.readystate='complete'
Irgendwie habe ich eine Abneigung gegen den Stringvergleich, habe aber nichts vernünftiges gefunden (vllt. auch falsch gesucht).

Das
Delphi-Quellcode:
TWebBrowser.Readystate
funktioniert bein Laden von Frames übrigens nicht wie erwartet.

könntet Ihr mir da weiter helfen?
Gruß
K-H

himitsu 20. Jun 2014 11:03

AW: TWebbrower und ReadyState
 
Zitat:

Zitat von p80286 (Beitrag 1263024)
Das
Delphi-Quellcode:
TWebBrowser.Readystate
funktioniert bein Laden von Frames übrigens nicht wie erwartet.

Das kann man so nicht sagen. :stupid:

Die äußere Seite kann natürlich komlett geladen sein, aber was die eingebetteten Seiten (Frames) betrifft, ist das dieser Seite halt ein klein bissl sowas von egal.
Schließlich kann man die untergeordneten Frames auch unabhängig von der Seite später immer wieder mit sonstwas neu laden.


PS: Viele raten sowieso von der Nutzung von Frames ab.
Vorallem da es dort mit der Histroy ein paar Probleme gibt, dann kann man in der Adressleiste nicht sehn wo man ist und sich eine URL speichern und später nochmal verwenden, geht da auch nicht so gut, wenn zwischenzeitlich der Inhalt des Frames ein Anderer ist.
OK, Tabellen mag auch kaum noch wer und man solle es doch lieber mit DIVs machen usw. ... alles entwickelt sich weiter.

Sir Rufo 20. Jun 2014 11:40

AW: TWebbrower und ReadyState
 
Wenn das Haupt-Dokument komplett geladen wurde, erst danach starten die Frame-Dokumente (sieht man sehr schön, wenn man die Events mitverfolgt).

Lösungsansatz:

Frage das Haupt-Dokument (wenn es fertig geladen ist), wieviele Frames dort enthalten sind. Und jedes Frame (wenn fertig geladen) auch noch mal (die guten Matroschka-Seiten Frame-In-Frame).

Wenn du jetzt die Gesamtzahl der einzelnen Dokumente dadurch ermittelt hast, und z.B. bei den Events (DocumentComplete) auch mitzählst, dann sollte irgendwann ein Gleichstand herrschen (oder beim Ermitteln zählst du hoch und beim Event wieder runter - dann bist du irgendwann bei 0).

Ach ja, ganz übel wird es, wenn irgendwelche Frames (die wo du was von haben willst) erst per JavaScript geladen werden, dann wird es nochmal komplizierter :)

p80286 20. Jun 2014 12:19

AW: TWebbrower und ReadyState
 
@Himitsu
Na ich bin halt etwas Naiv....

@Sir Rufo
Da hast Du mich mißverstanden, die Matroschka hab ich erschlagen!
Mir geht es um das
Delphi-Quellcode:
'complete'
.
Mal bekomme ich als ReadyState einen Numerischen Wert (WB_COMPLETE,WB_INTERACTIVE oder s.ä.) mal einen string 'complete', 'interactive'.
Da muß ich in der MS-Doku irgendwo mal falsch abgebogen sein?

Gruß
K-H

mkinzler 20. Jun 2014 12:20

AW: TWebbrower und ReadyState
 
Es handelt sich eigentlich um einen ENUM (4 = fertisch)


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:48 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