VBScript warten bis IE fertig geladen

little_skunk

Semiprofi
Thread Starter
Mitglied seit
17.08.2006
Beiträge
3.773
Hallo

Wie der Titel schon sagt, will ich warten bis der IE fertig geladen ist. Mein derzeitiges VBScript wartet nur bis die Seite fertig geladen ist aber nicht bis die Javascripts ausgeführt wurden. Gibt es dafür eine einfache Lösung?

Code:
Dim objShell
	Dim obj

	Set objShell = CreateObject("Shell.Application")

	'Alle Fenster durchgehen
	For Each obj In objShell.Windows
		'offene HTMLDocumente suchen
		If TypeName(obj.Document) = "HTMLDocument" Then

			'warten bis das Document fertig geladen ist
			Do While obj.busy
			Loop
	
			'Debugausgabe
			'MsgBox "Fertig"

		End If
	Next
 
Wenn Du diese Anzeige nicht sehen willst, registriere Dich und/oder logge Dich ein.
Nicht das ich wüßte.
Wir hatten genau das Problem gelöst, indem wir proprietäre JavaScript calls erzeugt, und im Client Code abgefangen (bei uns wars C++) hatten. Das geht natürlich nur, wenn man auch Zugriff auf den JavaScript Inhalt hat und keinen universellen Browser schreibt.
 
So sieht das ganze für VB aus: vb@rchiv · Tipps & Tricks · Feststellen, wann eine Webseite vollständig geladen ist

Code:
Private Sub WebBrowser1_DocumentComplete(ByVal pDisp As Object, URL As Variant)
  ' Prüfen, ob Seite vollständig geladen ist
  If (pDisp Is WebBrowser1.Object) Then
    Label1.Caption = "Dokument komplett geladen."
  Else
    Debug.Print "Loading..."
  End If
End Sub

Achten Sie einmal auf das Direktfenster. Dort können Sie sehen, dass das DocumentComplete-Ereignis mehrfach ausgelöst wurde. Frames sei Dank! Das Label-Control hingegen ändert sich erst, wenn die Seite wirklich vollständig geladen wurde.

In VBScript habe ich im Moment 2 Möglichkeiten. Entweder ich frage den IE ob er fertig geladen hat oder ich warte auf das erste DocumentComplete Event. Beides hilft mir nicht wirklich weil meine Seite leider ein Framset beinhaltet.
Beim VB Code wird geprüft von wem das DocumentComplete gefeuert wurde. Das wäre natürlich perfekt. Wie mach ich das aber in VBScript?
 
So ich hab mal wieder etwas Zeit für gehabt und ein wenig rumprobiert. Folgendes funktioniert soweit:

Code:
Dim objIE
Set objIE = WScript.CreateObject("InternetExplorer.Application","objIE_")
objIE.Visible = True
objIE.Navigate2 "http://www.hardwareluxx.de"
Do While objIE.Visible
WScript.Sleep 1000
Loop
Sub obj_DocumentComplete(pDisp,URL)
	msgbox "Fertig"
End Sub

Soweit sogut. Das Problem ist nur, dass dabei ein neue IE Instanz geöffnet wird. Ich möchte ja eine bestehende IE Instanz überprüfen. Da habe ich im Moment aber noch ein paar Probleme. Noch gebe ich aber nicht auf :d
 
Hardwareluxx setzt keine externen Werbe- und Tracking-Cookies ein. Auf unserer Webseite finden Sie nur noch Cookies nach berechtigtem Interesse (Art. 6 Abs. 1 Satz 1 lit. f DSGVO) oder eigene funktionelle Cookies. Durch die Nutzung unserer Webseite erklären Sie sich damit einverstanden, dass wir diese Cookies setzen. Mehr Informationen und Möglichkeiten zur Einstellung unserer Cookies finden Sie in unserer Datenschutzerklärung.


Zurück
Oben Unten refresh