Webentwicklung für den im Simulator integrierten Browser

Aus ZusiWiki
Version vom 16. September 2017, 23:48 Uhr von Johannes (Diskussion | Beiträge) (→‎Sound abspielen: MP3-Patente ausgelaufen)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

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 annehmen, dass die wenigen verbliebenen Windows-XP-Systeme zumindest den IE 8 (letzte noch für XP erschienene Version) installiert haben.

Unter Wine wird zur HTML-Anzeige ein Gecko-Derivat (ä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. In welchen Browserversionen ein Feature genutzt werden kann, verrät einem Can I use (ein Klick auf Show all zeigt auch ältere Browserversionen).

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 schied die Verwendung von MP3 im offiziellen Zusi-Datenbestand bislang aus. Die Patente sind allerdings inzwischen weltweit abgelaufen [1]. AAC hat den Vorteil, dass bei der Verteilung von AAC-Dateien auf Datenträgern keine Patentgebühren fällig werden. Ob MP3- oder AAC-Dateien Teil des offiziellen Zusi-Datenbestands werden können, muss jedoch (Stand September 2017) 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. Dieses Feature ist ab Addon Nr. 3 für die Installationsversion 1 umgesetzt.

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 durchzustreichenden span-Elements gestreckt. Sie ist als Data-URI direkt in die HTML-Datei eingebunden.
    • Da anscheinend die SVG-Datei zuerst in der Größe ihrer viewBox gerendert und dann als Bild skaliert wird, ist die viewBox-Breite auf 1000 Pixel festgelegt, um eine ansprechende Qualität zu erhalten.
  • 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 eigenen style-Tag mit dem Attribut media="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 das text-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 am margin unterbrochen. Daher wurde bei Feldern, die auch durchgestrichen sein können, margin auf 0 gesetzt und durch im HTML-Code manuell eingefügte &nbsp; ersetzt.

Text rotieren

Praxis-Anwendungsbeispiel: Bremszettel wie V408.0312V01.

Der Internet-Explorer unterstützt CSS3 2D-Transformation erst ab IE 9 (mit ms-transform) bzw. ab IE 10 mit transform. Es gibt allerdings schon seit IE 6 die Möglichkeit, eine DirectX-basierte Transformation nutzen zu können. Eine Erhöhung des IE-Feature-Levels ist deshalb für diesen Anwendungsfall eigentlich nicht notwendig. Ein CSS-Block, der das Rotieren von Text in allen gängigen Browsern ab ihren frühestmöglichen Versionen ermöglicht, sieht also so aus:

#dreh90 {
  filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3);
  -webkit-transform: rotate(-90deg);
  -moz-transform: rotate(-90deg);        
  -o-transform: rotate(-90deg);        
  transform: rotate(-90deg);
}

Einbinden externer Dateien in Befehlsvorlagen

Das Einbinden externer Dateien (Bilder, CSS, ...) in Befehlsvorlagen (nicht komplett individuelle Befehls-HTMLs) gestaltet sich schwierig, da die ausgefüllte Befehlsdatei vom Simulator im Temp-Verzeichnis abgelegt wird. Stattdessen nutzt man für CSS das style-Tag und für andere Dateien Data-URIs.

Auf das Einbinden von Dateien aus dem Internet (Bilder, Webfonts, ...) sollte man verzichten. Zusi liefert die Schriftart Open Sans im Ordner _Setup\timetable_basics mit.