Moin.
Ich arbeite für mein Projekt ja auf Browserseite nach dem Java Script Standard ES5.
ES 6 Features, die laut dieser Tabelle ECMAScript 6 compatibility table auch shcon auf IE11 unterstützt werden, können auch benutzt werden.
Wie z.B. const oder let.
Wenn nun jemand mit einem älteren Browser kommt, führt das aber zu Fehlern.
Ich will nun aber auch nicht massenhaft Feature Detections und Polyfills einbauen.
Sondern es soll eine zentrale Prüfung erfolgen.
Wenn es ein Browser älter als IE11 ist, oder falls nicht IE, ein Browser, der nicht ES5 unterstützt, soll eine Fehlermeldung ausgegeben werden und mit Ausführung meines Java Scripts erst gar nicht begonnen werden. Solche Browser werden dann so behandelt, als ob der User JS deaktiviert hätte. Sprich: Kein Login möglich, nur statische Seiten können gelesen werden.
Ich hab mein Script ja in einer Self invoking Funktion gekapselt. Statt selbstausführend könnte ich einfach diese kurze Prüfung vorschalten, die dann entweder aufruft oder nicht.
Auf CSS Ebene habe ich über "Media Querys" auch eine ausreichende Weiche drin. Wenn keine Media Querys unterstützt werden, landet der Browser auf dem Basis-Layout, welches in etwa dem XS-Mobile Layout entspricht. Das ist so abgespeckt, dass sogar der IE5.5 noch damit klar käme.
Also, gibt es irgendwie eine schnelle Möglichkeit, herauszufinden, welche JS Version der Browser unterstützt, die auch nicht von irgendwelchen Privacy Tools oder Einstellungen verbogen wird?
- - - Aktualisiert - - -
So, ich hab mal ein paar Kompatibilitätslisten durch gesehen.
Wenn ich einfach prüfe, ob let unterstützt wird, wäre ich etwa da, wo ich hin will, ohne massenhaft Features abzufragen.
Let ist nur bei hinreichend modernen Browsern verfügbar, aber der IE11 ist noch mit im Boot.
Wenn kein Let unterstützt wird, wird mein JS gleich zu beginn abgebrochen, und der Browser wird so behandelt, als sei JS vom User deaktiviert worden.
Damit wären alle alten Gurken schonmal so weit draußen, dass sie nur statische Seiten lesen können, und den internen Bereich mit dem Chat erst gar nicht betreten können.
Somit brauch ich dann beim Programmieren auf diese alten Gurken keine Rücksicht zu nehmen und ich könnte auch bedenkenlos auf LET statt VAR umschwenken.
- - - Aktualisiert - - -
Also ich versuche gerade folgendes:
Ich versuche, eine Variable per let zu deklarieren und per Object.create(null) ein Objekt darauf zu erstellen.
Damit möchte ich testen, ob das Schlüsselwort let unterstützt wird, und ob Object.create funktioniert.
Das ganze habe ich in einen Try ... Catch Block gesetzt.
Alte Internet Explorer Versionen melden trotzdem einen Fehler:
IE10: Syntaxfehler, ältere Versionen: ; erwartet.
Wie könnte man testweise ein "Let" und Object.create nutzen in alten Browsern? Ohne dass ein Syntaxfehler mit Scriptabbruch auftritt, so dass man noch eine schöne selbstgeschriebene Fehlermeldung (a la Dein Browser ist zu alt) vorher absetzen kann?
Ich arbeite für mein Projekt ja auf Browserseite nach dem Java Script Standard ES5.
ES 6 Features, die laut dieser Tabelle ECMAScript 6 compatibility table auch shcon auf IE11 unterstützt werden, können auch benutzt werden.
Wie z.B. const oder let.
Wenn nun jemand mit einem älteren Browser kommt, führt das aber zu Fehlern.
Ich will nun aber auch nicht massenhaft Feature Detections und Polyfills einbauen.
Sondern es soll eine zentrale Prüfung erfolgen.
Wenn es ein Browser älter als IE11 ist, oder falls nicht IE, ein Browser, der nicht ES5 unterstützt, soll eine Fehlermeldung ausgegeben werden und mit Ausführung meines Java Scripts erst gar nicht begonnen werden. Solche Browser werden dann so behandelt, als ob der User JS deaktiviert hätte. Sprich: Kein Login möglich, nur statische Seiten können gelesen werden.
Ich hab mein Script ja in einer Self invoking Funktion gekapselt. Statt selbstausführend könnte ich einfach diese kurze Prüfung vorschalten, die dann entweder aufruft oder nicht.
Auf CSS Ebene habe ich über "Media Querys" auch eine ausreichende Weiche drin. Wenn keine Media Querys unterstützt werden, landet der Browser auf dem Basis-Layout, welches in etwa dem XS-Mobile Layout entspricht. Das ist so abgespeckt, dass sogar der IE5.5 noch damit klar käme.
Also, gibt es irgendwie eine schnelle Möglichkeit, herauszufinden, welche JS Version der Browser unterstützt, die auch nicht von irgendwelchen Privacy Tools oder Einstellungen verbogen wird?
- - - Aktualisiert - - -
So, ich hab mal ein paar Kompatibilitätslisten durch gesehen.
Wenn ich einfach prüfe, ob let unterstützt wird, wäre ich etwa da, wo ich hin will, ohne massenhaft Features abzufragen.
Let ist nur bei hinreichend modernen Browsern verfügbar, aber der IE11 ist noch mit im Boot.
Wenn kein Let unterstützt wird, wird mein JS gleich zu beginn abgebrochen, und der Browser wird so behandelt, als sei JS vom User deaktiviert worden.
Damit wären alle alten Gurken schonmal so weit draußen, dass sie nur statische Seiten lesen können, und den internen Bereich mit dem Chat erst gar nicht betreten können.
Somit brauch ich dann beim Programmieren auf diese alten Gurken keine Rücksicht zu nehmen und ich könnte auch bedenkenlos auf LET statt VAR umschwenken.
- - - Aktualisiert - - -
Also ich versuche gerade folgendes:
Ich versuche, eine Variable per let zu deklarieren und per Object.create(null) ein Objekt darauf zu erstellen.
Damit möchte ich testen, ob das Schlüsselwort let unterstützt wird, und ob Object.create funktioniert.
Das ganze habe ich in einen Try ... Catch Block gesetzt.
Alte Internet Explorer Versionen melden trotzdem einen Fehler:
IE10: Syntaxfehler, ältere Versionen: ; erwartet.
HTML:
try {
let testObj=Object.create(null);
}
catch(err) {
console.log(err);
}
finally {
console.log("blubb");
}
Wie könnte man testweise ein "Let" und Object.create nutzen in alten Browsern? Ohne dass ein Syntaxfehler mit Scriptabbruch auftritt, so dass man noch eine schöne selbstgeschriebene Fehlermeldung (a la Dein Browser ist zu alt) vorher absetzen kann?