jürgen j.: Javascript Browserabfrage für Geckos

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

  1. 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

    1. 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

      1. 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

        --
        SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
        1. 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

          1. 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

            1. 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

              --
              SELFTREFFEN 2003 - http://selftreffen.kuemmi.ch/
              1. 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