ich lese über den FacesContext den UserAgent aus um festzustellen ob der Nutzer einen kompatiblen Browser für die Website hat.
userAgent = externalContext.getRequestHeaderMap().get("User-Agent");
System.out.println(userAgent);```
Ausgabe sieht dann so aus;
Mozilla/5.0 (Windows NT 6.1; WOW64; rv:17.0) Gecko/20100101 Firefox/17.0
Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; WOW64; Trident/5.0)
Nun stellt sich mir die Frage, beginnt dieser String immer mit "Mozilla"+Versionsnummer oder ist das ganze eventuell vom Betriebssystem abhängig?
wie soll man da rangehen, suche im Internet nach Informationen dazu, fertigen Auswertungen,
Links von jemanden hier der sich dazu bereits auskennt wären wahrscheinlich erfreulich
ich bin das nicht, aber möchte zumindest als halben Cent auf
verweisen, dort kann man sich anscheinend paar Beispiele angeben lassen, Opera zeigt demnach was anderes an
im obligatorischen Wiki-Artikel steht natürlich auch ein wenig zum ominösen ‚Mozilla‘
wenn das Betriebssystem erst noch ein hinterer Eintrag im User-Agent ist, wäre vorher schon Unterscheidung aber mächtig verarbeitungs-ungünstig
Danke schön, ich geb zu das ich gestern nur ganz schnell gesucht hatte.
Im geplanten Anwenderkreis wird nur InternetExplorer oder Firefox verwendet. Beide haben als Kennung Mozilla und somit kann ich den String danach durchsuchen und die Versionsnummer extrahieren.
Das ganze sieht jetzt so aus:
userAgent = externalContext.getRequestHeaderMap().get("User-Agent");
System.out.println(userAgent);
double version = 0.0;
if (userAgent.contains("Mozilla")) {
int startIndex = userAgent.indexOf('/');
int endIndex = userAgent.indexOf('(');
version = Double.parseDouble(userAgent.substring(startIndex + 1, endIndex));
System.out.println(version);
}```
falls es elegantere Wege gibt um die Browserversion auslesen, immer her damit :)
Zwei Anmerkungen:
-Ist das wirklich die Version, die Dich interessiert? Beim Firefox steht die echte Version nämlich ganz am Ende (Firefox/17.0) und bei den IEs in der Mitte (MSIE 9.0)
-Die Version als Double zu parsen ist ziemlicher Blödsinn. Was machst du, wenn die Hersteller auf die Idee kommen, Strings in die Version mit einzubauen?
[QUOTE=nillehammer]Zwei Anmerkungen:
-Ist das wirklich die Version, die Dich interessiert? Beim Firefox steht die echte Version nämlich ganz am Ende (Firefox/17.0) und bei den IEs in der Mitte (MSIE 9.0)
[/QUOTE]
mich interessiert wirklich nur diese Version, hauptsächlich geht es darum dass das Design eben für IE9 optimiert ist. IE8 und IE7 haben als Useragent Mozilla/4.0. Damit ist diese Unterscheidung ausreichend.
Zunächst hatte ich auch nach MSIE gesucht um direkt die Version des Internetexplorers zu prüfen, allerdings gibt es nicht nur den IE im Anwenderkreis. Und warum sollte ich dann zum einen nach MSIE und zum anderen nach Firefox suchen wenn die Unterscheidung zu Beginn schon ausreichend ist?
[QUOTE=nillehammer;89258]
-Die Version als Double zu parsen ist ziemlicher Blödsinn. Was machst du, wenn die Hersteller auf die Idee kommen, Strings in die Version mit einzubauen?[/QUOTE]
nach Double zu parsen hat den Vorteil dann ich im späteren Ablauf prüfen kann ob die Version höher als 5.0 ist und nicht mehrere Stringvergleiche durchführen muss.
[QUOTE=Greta]mich interessiert wirklich nur diese Version, hauptsächlich geht es darum dass das Design eben für IE9 optimiert ist. IE8 und IE7 haben als Useragent Mozilla/4.0. Damit ist diese Unterscheidung ausreichend.
Zunächst hatte ich auch nach MSIE gesucht um direkt die Version des Internetexplorers zu prüfen, allerdings gibt es nicht nur den IE im Anwenderkreis. Und warum sollte ich dann zum einen nach MSIE und zum anderen nach Firefox suchen wenn die Unterscheidung zu Beginn schon ausreichend ist?[/QUOTE]