IE-spezifische Funktionen: showModelessDialog()
Martin
- javascript
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