Webentwicklung für den im Simulator integrierten Browser
Grundlagen
Simulator und 3D-Editor nutzen den ins Betriebssystem integrierten Microsoft Internet Explorer derzeit für folgende Funktionen:
- Darstellung einer Begrüßung nach dem Laden eines Fahrplans
- Einblendung eines „Anfangsbefehls” nach dem Aufgleisen eines Zuges
- Einblendung von vorkonfigurierten oder individuellen Befehlsformularen bei der Fahrt des Zuges
Der verwendete Browser ist auf Windows-Systemen immer der Internet Explorer, auch wenn der Anwender auf seinem Desktop die Zugriffsmöglichkeiten auf den IE deinstalliert hat und eigentlich einen anderen Browser verwendet.
Zu testende Konfigurationen
Auf Rechnern mit Windows Vista oder neuer wird der Zusi-integrierte Webbrowser standardmäßig immer auf dem Feature-Level des Internet Explorer 7 gestartet, und zwar auch dann, wenn auf dem Desktop eine neuere IE-Version zur Verfügung steht. Da die minimale Systemanforderung von Zusi derzeit Windows XP ist, muss man bei der Web-Entwicklung für den Zusi-integrierten Browser theoretisch auch davon ausgehen, dass zur Darstellung nur der IE 6 zur Verfügung steht. In der Praxis sollte man aber davon ausgehen, dass die wenigen verblieben Windows-XP-Systeme zumindest den IE 8 (letzte noch für XP erschienene Version) installiert haben.
Unter Wine wird zur HTML-Anzeige ein Gecko-Deriviat (ähnlich Firefox) verwendet. Zwar kann man mit dem winetricks
-Tool auch einen Original-IE (bis Version 8) installieren, für Zusi ist das jedoch nicht notwendig.
Möchte man Webseiten für Zusi entwickeln, sollte man daher für folgende Platformen testen:
- Aktueller Internet Explorer
- Internet Explorer 8 (sollte zumindest akzeptabel aussehen)
- Aktueller Gecko (z.B. Firefox)
Zum Testen im IE bietet Microsoft virtuelle Maschinen mit vorinstalliertem IE in verschiedenen Versionen an.
Der Test sollte umfassen:
- Normale Darstellung
- Drucken mit Hintergrundbildern (zu finden in den Druckoptionen)
- Drucken ohne Hintergrundbilder
Erläuterung: Die Option, Hintergrundfarben und CSS-Hintergrundbilder zu drucken, ist im IE (mindestens in Version 8) standardmäßig deaktiviert. Unter Wine ist sie ebenfalls standardmäßig deaktiviert und es gibt aktuell keine Möglichkeit, sie zu aktivieren. Man sollte daher darauf achten, dass ein ausgedrucktes Befehlsformular auch bei deaktivierter Option alle wesentlichen Inhalte darstellt.
Erhöhung des IE-Feature-Levels
Nachdem man sich also Gedanken um die Abwärtskompatibilität der html-Dateien gemacht hat, spricht allerdings auch nichts dagegen, durch eine besondere Meta-Deklaration in der html-Datei einen höheren Feature-Level des Internet-Explorers anzufordern, um auf modernen Rechnern eine bessere Darstellung zu erreichen. Wenn beispielsweise ein Feature verwendet wird, das mindestens den IE 9 erfordert, fügt man folgende Deklaration in den Kopf der html-Datei ein:
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
Wenn auf dem System ein IE 9 oder höher zur Verfügung steht, wird dieser damit eingeschaltet. Ein System ohne IE 9 wird sein Bestes geben, um die Webseite im Rahmen seiner Möglichkeiten irgendwie darzustellen. Es sollte daher auf jeden Fall geprüft werden, ob die Darstellung auch ohne diese Meta-Deklaration annehmbar aussieht.
Beispiele für wünschenswerte Erhöhung des Feature-Levels
Sound abspielen
Als Gimmick könnte man bei der Einblendung eines individuellen Befehls ein vorproduziertes "Zugfunkgespräch" zwischen Tf und Fdl einspielen. Ab IE 9 wird hierfür das HTML5-Audio-Tag unterstützt. Leider kann der IE9 dabei nur die Formate MP3 und AAC abspielen. Aufgrund von Lizenzgebührforderungen der MP3-Patenthalter scheidet die Verwendung von MP3 im offiziellen Zusi-Datenbestand allerdings aus (Die Patente sind wohl inzwischen in Deutschland abgelaufen. Da Zusi 3 allerdings im Prinzip weltweit vertrieben wird, muss auch die Patentsituation in anderen Ländern berücksichtigt werden). AAC hat den Vorteil, dass bei der Verteilung von AAC-Dateien auf Datenträgern keine Patentgebühren fällig werden. Ob AAC-Dateien Teil des offiziellen Zusi-Datenbestands werden können, muss jedoch (Stand Januar 2016) noch abschließend von Firma Hölscher entschieden werden.
Eine Alternative, die sogar zum IE 6 kompatibel ist, ist die Verwendung des <bgsound>-Elements. Damit ist auch das Abspielen von wav-Dateien möglich.
Besondere Durchstreichungen
Exemplarisch wird hier die Umsetzung von schrägen Durchstreichungen in Befehlen (Signals\Deutschland\Befehle\*.htm
) erläutert. In der Version 3.1.0.0 ist dieses Gimmick noch nicht enthalten, ersatzweise sei für den CSS-Code auf die (unvollständigen) Codebeispiele im Forum verwiesen.
Normale Ansicht:
- Für das schräge Durchstreichen sorgt eine SVG-Datei als CSS-Hintergrund. Sie enthält eine blaue Linie von links unten bis rechts oben und wird mittels
background-size: 100% 100%
auf die Breite des durchzustreichendenspan
-Elements gestreckt. Sie ist als Data-URI direkt in die HTML-Datei eingebunden. - IE8 unterstützt keine SVG-Dateien. Daher wird mittels eines CSS-Hacks (Selektor
html:not([ie8andbelow])
) für IE8 ersatzweise eine PNG-Datei mit einem dicken geraden blauen Strich als Hintergrundbild eingebunden.
Druckansicht:
- Die Durchstreichungen sollen unabhängig von der Einstellung "Hintergrund drucken" gedruckt werden. Daher scheidet die Verwendung von Hintergrundbildern (sowohl SVG als auch PNG) aus. Stattdessen wird die normale CSS-Eigenschaft
text-decoration: line-through
verwendet. - IE8 unterstützt keine Media-Queries (
@media print { ... }
). Daher liegen die Deklarationen für das Druck-Stylesheet in einem eigenenstyle
-Tag mit dem Attributmedia="print"
. - Im Druck-Stylesheet wird zunächst sowohl für IE8 als auch für IE9 und höher der Hintergrund per
background: none
gelöscht, damit bei aktivierter Option "Hintergrund drucken" nicht gerade und schräg durchgestrichen wird. - Die Durchstreichungen sollen in blauer Farbe, der Text in schwarzer Farbe erscheinen. Dies wird durch das Schachteln zweier
span
-Elemente erreicht: Der äußere hat eine blaue Textfarbe und bekommt im Durchstreichfall dastext-decoration
-Attribut. Der innere (class="durchstr-helfer"
) enthält den durchzustreichenden Text und bekommt eine schwarze Textfarbe zugewiesen. - In den Befehlsformularen gibt es (vom Lokführer auszufüllende) unterstrichene Felder, die ein
margin
haben. Werden diese Felder durchgestrichen, so wird die Durchstreichung ammargin
unterbrochen. Daher wurde bei Feldern, die auch durchgestrichen sein können,margin
auf 0 gesetzt und durch im HTML-Code manuell eingefügte
ersetzt.