Javascript Browserabfrage für Geckos
jürgen j.
- browser
Hallo!
if (navigator.userAgent.match("Gecko"))
soll alle Geckos ab (mindestens) mozilla1 / nn7, einschließlich aller Abkömmlinge erkennen.
Tuts das wirklich? Weiß jemand was anderes/besseres?
Danke, tschüs, jürgen
Hallo Jürgen,
Tuts das wirklich?
Nein. Der UserAgent lässt sich beliebig fälschen -> http://uabar.mozdev.org/
Weiß jemand was anderes/besseres?
Soweit ich informiert bin, kennen Geckos als einzige Browser das Objekt window.sidebar, allerdings bin ich mir da nicht ganz sicher. Im Moment lassen sich navigator.appName und navigator.appVersion nicht fälschen, allerdings würde ich für die Zukunft nicht darauf wetten. Eine wirklich zuverlässige Browserabfrage gibt es nicht.
Wozu brauchst Du das denn überhaupt? Vielleicht lässt sich Dein Problem anders lösen.
Viele Grüße,
Christian
Hallo!
Nein. Der UserAgent lässt sich beliebig fälschen -> http://uabar.mozdev.org/
Das wäre mir dann egal, wer sowas tut, weiß was er macht.
Soweit ich informiert bin, kennen Geckos als einzige Browser das Objekt window.sidebar, allerdings bin ich mir da nicht ganz sicher.
Danke, wußte ich noch nicht.
Wozu brauchst Du das denn überhaupt? Vielleicht lässt sich Dein Problem anders lösen.
Ich habe kein aktuelles Problem, ich bin beim "basteln" auf diese Frage gestoßen. So habe ich mir recht einfach Browserweichen für verschiedene Operaversionen gebaut (hat ja jede eigene Bugs):
navigator.userAgent.match("Opera.7.11") ist gut für alle Opera 7.11, auch wenn der Benutzer "ausgeben als IE6" eingestellt hat.
Ich hätte es auch so formulieren können:
Enthält navigator.userAgent bei den Geckos immer das Wort "Gecko", sofern der userAgent nicht gefälscht ist ;) ?
Danke, tschüs, jürgen
Hi jürgen j.,
navigator.userAgent.match("Opera.7.11") ist gut für alle Opera 7.11, auch wenn der Benutzer "ausgeben als IE6" eingestellt hat.
Ich verwende die aktuellste Version und diese ist nicht 7.11. Hast du das bedacht?
Grüße,
Roland
Hallo!
navigator.userAgent.match("Opera.7.11") ist gut für alle Opera 7.11, auch wenn der Benutzer "ausgeben als IE6" eingestellt hat.
Ich verwende die aktuellste Version und diese ist nicht 7.11. Hast du das bedacht?
Aha, war mir neu.
Selbstredend erfordern solche Konstruktionen permanentes Update.
Übrigens war das mit 7.11 nur ein Beispiel, angewendet habe ich das mal auf 7.10, wg. Bug _nur_ in dieser Version. Außerdem kannst Du das ja beliebig anpassen, z.B:
navigator.userAgent.match("Opera[3-6]") (hab ich öfter wg. window.location Problemen)
navigator.userAgent.match("Opera.6.[0-3]")
navigator.userAgent.match("Opera.7.[0-9]")
tschüs, jürgen
Hallo Orlando!
navigator.userAgent.match("Opera.6.[0-3]")
Als Opera- und überhaupt- Spezialist weißt Du natürlich, daß das Unfug ist.
So is richdich:
navigator.userAgent.match("Opera.6.0[0-3]")
tschüs, jürgen
Hi Jürgen,
navigator.userAgent.match("Opera.6.[0-3]")
hältst du diese Methode eigentlich für praktikabel? Du musst immer auf dem aktuellen Stand sein, was neue Browserversionen betrifft. Ich bezweifle, dass das möglich ist und glaube, dass ein anderer Weg praktikabler wäre. Wozu benötigst du eigentlich diese Weiche?
Grüße,
Roland
Hallo!
navigator.userAgent.match("Opera.6.[0-3]")
hältst du diese Methode eigentlich für praktikabel?
Praktikabel ist das natürlich nur für verganene Versionen, der Rest ist Spielerei.
Das:
if (!navigator.userAgent.match("Opera.[3-6]"))
brauche ich z.B. konkret um Opera vor Version 7 von bestimmten Scripts mit window.location oder window.replace() fernzuhalten, da gabs Probleme mit Opera 5 und 6 (gibt natürlich noch andere Beispiele, wo Opera eben nicht mitspielen will oder Fehlermeldungen bringt).
tschüs, jürgen