Seite 1 von 1
Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 00:40
von Delle
Hallo,
kann man den folgenden Code so verwenden? Das Programm soll erst weiterlaufen, wenn die Webseite vollständig geladen wurde.
Code: Alles auswählen
WebGadget(#Web,0,0,800,600,url$)
While GetGadgetAttribute(#Web,#PB_Web_Busy)<>0
While WindowEvent():Wend
Wend
Soll ich ev. zwischen
Webgadget und
While ein
Delay machen?
Nicht das am Ende noch gar nicht damit begonnen wurde die Website zu laden und
While gleich überflogen wird...
Danke,
Delle
Re: Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 10:08
von RSBasic
Ich würde das nicht so machen, sondern:
Code: Alles auswählen
EnableExplicit
Define EventID
Define Browser.IWebBrowser2
Define SiteLoaded
If OpenWindow(0, 0, 0, 500, 400, "Window", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_Invisible)
WebGadget(1, 10, 10, 480, 380, "http://webfail.de")
;Ist nur dazu da, um die nervigen IE-Fehlermeldungen zu unterdrücken.
Browser = GetWindowLongPtr_(GadgetID(1), #GWL_USERDATA)
Browser\put_Silent(#True)
;HideGadget(1, 1)
Debug "Seite wird geladen. Bitte warten..."
Repeat
EventID = WaitWindowEvent()
If GetGadgetAttribute(1, #PB_Web_Busy) = 0 And SiteLoaded = 0
;HideGadget(1, 0)
;oder
HideWindow(0, 0)
SiteLoaded = 1
Debug "Seite wurde vollständig geladen."
EndIf
If EventID = #PB_Event_CloseWindow
End
EndIf
ForEver
EndIf
Re: Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 10:47
von Danilo
RSBasic hat geschrieben:Ich würde das nicht so machen, sondern:
[...]
WinAPI forever.

Re: Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 12:41
von Delle
RSBasic hat geschrieben:Ich würde das nicht so machen, sondern:
Jetzt fehlt mir nur noch die Begründung

Re: Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 12:49
von Andesdaf
bei RSBasics Code besteht die Möglichkeit, dass während des Ladevorgangs
noch auf andere Events reagiert werden kann (z.B. Schließen des Fensters).
Dein Code würde das Programm während des Ladens der Seite erst einmal
nicht ansprechbar machen, was in den Augen des Anwenders nicht positiv
rüberkommen wird.
Re: Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 12:56
von Delle
Andesdaf hat geschrieben:bei RSBasics Code besteht die Möglichkeit, dass während des Ladevorgangs noch auf andere Events reagiert werden kann (z.B. Schließen des Fensters). Dein Code würde das Programm während des Ladens der Seite erst einmal nicht ansprechbar machen, was in den Augen des Anwenders nicht positiv rüberkommen wird.
Der Anwender
soll da auch gar nicht irgendwie drin rumklicken
Mir ging's mehr darum, dass das
Webgadget am Ende noch gar nicht läd aber
While schon aufgerufen und eben übersprungen wird.
Re: Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 14:40
von Delle
RSBasic hat geschrieben:Wenn ein Fenster geöffnet wird und dann muss die Eventschleife stets durchlaufen werden, da sonst das Fenster nicht reagiert und keine Events abgefeuert und verarbeitet werden können. Es ist einfach unsauber, wenn das Fenster aufgrund eines Delays oder einer anderen Schleife nicht auf Events reagieren kann.
Ich weiß, aber in dem Falle ist es a) egal und b) der User soll auch gar nicht während dem Ablauf "reinpfuschen".
RSBasic hat geschrieben:Außerdem würde dein Code, den du in deinem Startbeitrag gepostet hast, nicht funktionieren, weil GetGadgetAttribute(#WebGadget, #PB_Web_Busy) den Wert "1" zurückgibt, wenn die Seite noch beim Laden ist. Wenn der Ladevorgang fertig ist, dann wird "0" zurückgegeben.
Nun dann ist die Hilfe anscheinend fehlerhaft:
#PB_Web_Busy: Gibt einen Wert ungleich Null zurück, wenn das Gadget mit dem Laden einer Seite beschäftigt ist.
Also irgendein Wert (außer 0) wenn es noch läd.
Wert = GetGadgetAttribute(#Gadget, Attribut)
Rückgabewert: Gibt den Wert des angegebenen Gadget-Attributs zurück, oder Null wenn das Gadget das Attribut nicht unterstützt.
Und hier wird angeblich 0 zurückgegeben, wenn das Attribut nicht unterstützt wird...
Re: Abfrage mittels #PB_Web_Busy ob WebGadget noch läd
Verfasst: 23.10.2013 15:47
von bobobo
LOGIK ¿?¿?
Das schliesst sich nicht aus. Das Webgadget unterstützt ja das Attribut und gibt 0 zurück wenn es
fertig ist mit dem Laden.