Webentwicklung für den im Simulator integrierten Browser: Unterschied zwischen den Versionen
(→Sound abspielen: MP3-Patente ausgelaufen) |
|||
(13 dazwischenliegende Versionen von 3 Benutzern werden nicht angezeigt) | |||
Zeile 3: | Zeile 3: | ||
* Darstellung einer Begrüßung nach dem Laden eines Fahrplans | * Darstellung einer Begrüßung nach dem Laden eines Fahrplans | ||
* Einblendung eines | * Einblendung eines „Anfangsbefehls“ nach dem Aufgleisen eines Zuges | ||
* Einblendung von vorkonfigurierten oder individuellen Befehlsformularen bei der Fahrt des 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. | 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 == | |||
Unter Wine wird | 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 <code>winetricks</code>-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: | 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) | * Internet Explorer 8 (sollte zumindest akzeptabel aussehen) | ||
* Aktueller Gecko (z.B. Firefox) | * Aktueller Gecko (z.B. Firefox) | ||
Zum Testen im IE bietet Microsoft [https://dev.windows.com/en-us/microsoft-edge/tools/vms/ virtuelle Maschinen] mit vorinstalliertem IE in verschiedenen Versionen an. In welchen Browserversionen ein Feature genutzt werden kann, verrät einem [http://caniuse.com/ Can I use] (ein Klick auf ''Show all'' zeigt auch ältere Browserversionen). | |||
Der Test sollte umfassen | Der Test sollte umfassen: | ||
* Normale Darstellung | * Normale Darstellung | ||
* Drucken mit Hintergrundbildern ( | * Drucken mit Hintergrundbildern (zu finden in den Druckoptionen) | ||
* Drucken ohne Hintergrundbilder | * 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 == | == 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: | 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: | ||
<code><meta http-equiv="X-UA-Compatible" content="IE=9"></code> | <code><meta http-equiv="X-UA-Compatible" content="IE=9"/></code> | ||
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. | 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. | ||
Zeile 31: | Zeile 35: | ||
=== Beispiele für wünschenswerte Erhöhung des Feature-Levels === | === Beispiele für wünschenswerte Erhöhung des Feature-Levels === | ||
==== Sound abspielen ==== | ==== Sound abspielen ==== | ||
Als Gimmick könnte man bei der Einblendung eines individuellen Befehls ein vorproduziertes | 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 | 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 [https://www.heise.de/newsticker/meldung/Fraunhofer-IIS-Lizenzprogramm-fuer-MP3-endet-3714367.html]. 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. | ||
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 | |||
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. | 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 ==== | ==== Besondere Durchstreichungen ==== | ||
Exemplarisch wird hier die Umsetzung von schrägen Durchstreichungen in Befehlen (<code>Signals\Deutschland\Befehle\*.htm</code>) 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 <code>background-size: 100% 100%</code> auf die Breite des durchzustreichenden <code>span</code>-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 <code>html:not([ie8andbelow])</code>) 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 <code>text-decoration: line-through</code> verwendet. | |||
* IE8 unterstützt keine Media-Queries (<code>@media print { ... }</code>). Daher liegen die Deklarationen für das Druck-Stylesheet in einem eigenen <code>style</code>-Tag mit dem Attribut <code>media="print"</code>. | |||
* Im Druck-Stylesheet wird zunächst sowohl für IE8 als auch für IE9 und höher der Hintergrund per <code>background: none</code> 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 <code>span</code>-Elemente erreicht: Der äußere hat eine blaue Textfarbe und bekommt im Durchstreichfall das <code>text-decoration</code>-Attribut. Der innere (<code>class="durchstr-helfer"</code>) 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 <code>margin</code> haben. Werden diese Felder durchgestrichen, so wird die Durchstreichung am <code>margin</code> unterbrochen. Daher wurde bei Feldern, die auch durchgestrichen sein können, <code>margin</code> auf 0 gesetzt und durch im HTML-Code manuell eingefügte <code>&nbsp;</code> ersetzt. | |||
==== Text rotieren ==== | ==== Text rotieren ==== | ||
Praxis-Anwendungsbeispiel: Bremszettel wie V408.0312V01. | |||
Der Internet-Explorer unterstützt CSS3 2D-Transformation erst ab IE 9 (mit <code>ms-transform</code>) bzw. ab IE 10 mit <code>transform</code>. 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: | |||
<pre><nowiki> | |||
#dreh90 { | |||
filter:progid:DXImageTransform.Microsoft.BasicImage(rotation=3); | |||
-webkit-transform: rotate(-90deg); | |||
-moz-transform: rotate(-90deg); | |||
-o-transform: rotate(-90deg); | |||
transform: rotate(-90deg); | |||
} | |||
</nowiki></pre> | |||
== | == Einbinden externer Dateien in Befehlsvorlagen == | ||
Das Einbinden externer Dateien (Bilder, CSS, ...) in Befehls''vorlagen'' (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 <code>style</code>-Tag und für andere Dateien [https://en.wikipedia.org/wiki/Data_URI_scheme Data-URIs]. | |||
Auf das Einbinden von Dateien aus dem Internet (Bilder, Webfonts, ...) sollte man verzichten. Zusi liefert die Schriftart Open Sans im Ordner <code>_Setup\timetable_basics</code> mit. |
Aktuelle Version vom 16. September 2017, 22:48 Uhr
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 durchzustreichendenspan
-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 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.
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.