Eine browserbasierte, auf JS basierende Anwendung fürs lokale Intranet braucht längere Zeit (ca. 5..10s) für die Initialisierung ihrer internen Daten. Um die Wartezeit zu überbrücken, zeige ich mit der Microsoft-spezifischen Funktion showModelessDialog() ein Fenster ("Splash Screen") mit einem kurzen Text und einer Fortschrittsanzeige ein:
splash = window.showModelessDialog("splash.htm", "dummy args",
"dialogWidth:240px;dialogHeight:160px;center:yes;help:no;status=no");
Die Fortschrittsanzeige lasse ich über
splash.ProgressBar.value = p;
während der Initialisierung fortlaufend aktualisieren, und sobald sie 100% erreicht hat, soll sich dieses Fenster selbständig schließen. Das wird über ein kurzes JS im Splash Screen realisiert. Hier der - zum Glück kurze - Quälcode des Splash Screen:
---> BEGIN SOURCE -------------
<HTML>
<HEAD>
<TITLE>Database Setup</TITLE>
</HEAD>
<SCRIPT LANGUAGE="javascript">
function Watch()
{ if (ProgressBar.value==ProgressBar.max)
self.close();
self.setTimeout("Watch()", 500);
}
</SCRIPT>
<BODY SCROLL="no" STYLE="background-color:threedface" ONLOAD="Watch()">
<DIV STYLE="text-align:center;font:messagebox">
<BR>Please stand by<BR>while database is<BR>being initialized.<BR><BR>
<OBJECT
ID="ProgressBar"
CLASSID="clsid:0713E8D2-850A-101B-AFC0-4210102A8DA7"
ALIGN="center"
BORDER="0"
WIDTH="90%" HEIGHT="8">
<PARAM NAME="min" VALUE="0">
<PARAM NAME="max" VALUE="100">
<PARAM NAME="value" VALUE="1">
</OBJECT>
</DIV>
</BODY>
</HTML>
---< END SOURCE ---------------
Das funktioniert auch alles ganz gut. Mit einer Ausnahme: Manchmal - aber nicht immer - kriege ich beim automatischen Schließen des Fensters folgende Fehlermeldung vom IE5:
"In dem Dialog ist ein Fehler aufgetreten.
Fehler: 83
Unbekannter Fehler"
Vielleicht kennt von euch jemand diesen Fehler, oder kann mir einen Anhaltspunkt geben, woher er kommen könnte. Ich beobachte dasselbe Symptom bei IE 5.0 und IE5.5; es beschränkt sich also nicht auf eine bestimmte Version.
Macht jetzt bitte nicht den Vorschlag, den Splash Screen mit
splash.close();
vom Hauptfenster aus zu schließen. Das funktioniert. Aber mir geht's inzwischen ums Prinzip - ich will eben wissen, warum ich mit der ersten Methode die beschriebene Fehlermeldung kriege und was sie wirklich bedeutet.
Danke für eure Ideen,
Martin