Mischa: Browsererkennung

Hallo! Ich hab mal wieder ein kleines Problemchen:
Habe ein JS zur Browsererkennung gebastelt und verstehe nicht, warum es von allen Browsern falsch interpretiert wird!

--------------------------------------------------------------------

<script language="JavaScript">
<!--

browser = navigator.appName;
version = parseInt(navigator.appVersion);
if (browser == "Netscape" && version >= 6) version = "ok";
else if (browser == "Netscape" && version < 6) version = "nc";
else if (browser == "Microsoft Internet Explorer" && version >= 6)
version = "ie6";
else if (browser == "Microsoft Internet Explorer" && version >= 5)
version = "ie5";
else if (browser == "Microsoft Internet Explorer" && version < 5)
version = "ie";
else version = "else";

if (version == "ok") {
alert("Du verwendest als Browser den Netscape 6. \n Eine korrekte Darstellung kann deshalb nicht garantiert werden!");
location.href="index2.html";
}

if (version == "nc") {
alert("Sorry! \n     Du verwendest einen Netscape-Browser der Version 5 oder tiefer. \n     Die gewünschte Website kann deshalb nicht dargestellt werden! \n     Du wirst daher auf die Homepage der Jahrgangsstufe 12\n     der Lichtenbergschule Darmstadt weitergeleitet. \n\nWenn du die Seite trotzdem betrachten möchtest,\n     benutze den Microsoft Internet Explorer oder den Netscape 6\n     oder gib einfach folgende Adresse in das Adressfeld deines Browsers ein:\n     http://www.spicken.de/abizeitung/1024_768/index2.html");
location.href="http://www.duck-soft.de/jahrgang12";
}

if (version == "ie6") {
location.href="index2.html";
}

if (version == "ie5") {
location.href="index2.html";
}

if (version == "ie") {
alert("Du verwendest als Browser den Microsoft Internet Explorer, Version 5 oder tiefer.\nEs ist dringend zu empfehlen, deinen Browser upzudaten auf Version 5, 5.5 oder 6!!!\nDie entsprechenden Downloads findest du unter http://www.microsoft.com/germany.\nNun aber viel Spaß auf der Homepage des AZ-Teams!!");
location.href="index2.html";
}

if (version == "else") {
alert("Du verwendest weder einen Microsoft- noch einen Netscape-Browser!\nEs können daher Unstimmigkeiten bei der Anzeige der Website auftreten!");
location.href="index2.html";
}
//-->

</script>

--------------------------------------------------------------------

Beim Internet Explorer 6 wird die Meldung, die eigentlich für den IE 4 und tiefer gedacht war ausgegeben:
Du verwendest als Browser den Microsoft Internet Explorer, Version 5 oder tiefer.\nEs ist dringend zu empfehlen, deinen Browser upzudaten auf Version 5, 5.5 oder 6!!!\nDie entsprechenden Downloads findest du unter http://www.microsoft.com/germany.\nNun aber viel Spaß auf der Homepage des AZ-Teams!!

Bei NS 6 wird die Meldung für NS 5 und tiefer ausgegeben:
Sorry! \n     Du verwendest einen Netscape-Browser der Version 5 oder tiefer. \n     Die gewünschte Website kann deshalb nicht dargestellt werden! \n     Du wirst daher auf die Homepage der Jahrgangsstufe 12\n     der Lichtenbergschule Darmstadt weitergeleitet. \n\nWenn du die Seite trotzdem betrachten möchtest,\n     benutze den Microsoft Internet Explorer oder den Netscape 6\n     oder gib einfach folgende Adresse in das Adressfeld deines Browsers ein:\n     http://www.spicken.de/abizeitung/1024_768/index2.html

Opera wird mit dem Internet Explorer verwechselt - auch hier:
Du verwendest als Browser den Microsoft Internet Explorer, Version 5 oder tiefer.\nEs ist dringend zu empfehlen, deinen Browser upzudaten auf Version 5, 5.5 oder 6!!!\nDie entsprechenden Downloads findest du unter http://www.microsoft.com/germany.\nNun aber viel Spaß auf der Homepage des AZ-Teams!!

Was hab ich denn bitte falsch gemacht, dass mich gleich ALLE Browser im Stich lassen und promt etwas anderes ausspucken, als was ich gerne hätte???
Kann mir jemand helfen??

Gruß,
Mischa (Cpt. Karl)

  1. hi

    gibt's auch einen Browser, der mit deiner Seite zurechtkommt? Nach den Warnungen nicht.

    Was hab ich denn bitte falsch gemacht, dass mich gleich ALLE Browser im Stich lassen und promt etwas anderes ausspucken, als was ich gerne hätte???

    mach die Seite lieber so, dass es einfach überall geht. Diese Meldungs-Orgie ist ja abscheulich.

    1. hi

      mach die Seite lieber so, dass es einfach überall geht. Diese Meldungs-Orgie ist ja abscheulich.

      Dem kann ich nur zustimmen.
      Außerdem wiedersprechen sich die Meldungen:

      Einmal heißt es:
      Wenn du die Seite trotzdem betrachten
      möchtest,\n     benutze den Microsoft Internet Explorer oder den Netscape 6

      Aber dann trotzdem:
      Du verwendest als Browser den Netscape 6. \n Eine korrekte Darstellung kann deshalb nicht garantiert
      werden!

      Ciao

      W. Pichler

  2. Hallo! Ich hab mal wieder ein kleines Problemchen:

    Du solltest besser gleich sagen:

    alert("Wir sind hier auf Windows! Ich bin leider (noch?) nicht in der Lage, anständig zu programmieren. Wenn Ihr unseren geliebten, unsicheren M$$ IE 5 oder 6 nicht verwendet, geht doch zum Teufel!");

    Dann wirst du wenigstens gleich richtig eingeschätzt.

    Ciao

    W. Pichler

  3. Netscape-Browser der Version 5

    klingt ja hoch interressant, hab leider noch nie davon gehört =)

    1. Hallo, xNeTworKx
      Das ist schon korrekt mit Netscape 5. Die offizielle Versionsnummer ist zwar 6, aber die "interne Nummer" ist halt 5.

      Gruß

  4. Hi,

    Wie du vielleicht mitbekommen hast, ist im Forum in der vergangennen
    Zeit auch über gefakte USER_AGENT-String diskutiert worden.

    IMHO bringt dir die Navigator-abfrage nix. Frage also lieber nach
    sinnvollen sachen:
    if (document.layers)  --> NN4x
    if ((document.all) && (!document.getElementById)) --> IIIIIIIIE4
    if ((document.all) && (document.getElementById))  --> IIIIIIIIE5+
    if ((!document.all) && (document.getElementById)) --> mozilla, NN6

    hier fehlt jetzt noch der Opera, must du halt noch etwas stöbern.
    aber das ist wesentlich brauchbarer.

    bye eddie

    PS. Ich schließe mich der Meinung an, besser Seiten zu basteln die in
    möglichst vielen Browsern gut aussehen, statt dem User zu melden was
    nicht geht.

    1. hi

      IMHO bringt dir die Navigator-abfrage nix. Frage also lieber nach
      sinnvollen sachen:
      if (document.layers)  --> NN4x
      if ((document.all) && (!document.getElementById)) --> IIIIIIIIE4
      if ((document.all) && (document.getElementById))  --> IIIIIIIIE5+
      if ((!document.all) && (document.getElementById)) --> mozilla, NN6

      hier fehlt jetzt noch der Opera, must du halt noch etwas stöbern.
      aber das ist wesentlich brauchbarer.

      Opera landet damit in der letzten Rubrik, konqueror unter IE5+

      1. hi,

        und hier mit opera...

        // some known objects
        var nc4   = !!(document.captureEvents && document.getElementById);
        var nc6   = !!(document.captureEvents && document.documentElement);
        var opera = !!(document.getElementById && !document.documentElement);
        var ie    = !!document.all;
        var ie4   = !!(document.all && !document.documentElement);
        var ie5Up = !!(document.all && document.documentElement);
        var dom   = !!document.getElementById;

        hth + Gruss  Joachim

      2. Moin,

        IMHO bringt dir die Navigator-abfrage nix. Frage also lieber nach
        sinnvollen sachen:
        if (document.layers)  --> NN4x
        if ((document.all) && (!document.getElementById)) --> IIIIIIIIE4
        if ((document.all) && (document.getElementById))  --> IIIIIIIIE5+
        if ((!document.all) && (document.getElementById)) --> mozilla, NN6

        Opera landet damit in der letzten Rubrik, konqueror unter IE5+

        schluck, soll das heißen Konquerer kennt das all-object?

        bye eddie

        1. Opera landet damit in der letzten Rubrik, konqueror unter IE5+
          schluck, soll das heißen Konquerer kennt das all-object?

          Opera kennt das all-Objekt auch, wenn er sich als IE5 verkleidet. :) Aber er kann nicht alles, was der IE kann, also ist das eher problematisch.

          - Sven Rautenberg

      3. Hallo Kai!

        Opera landet damit in der letzten Rubrik, konqueror unter IE5+

        Hmm.. Opera kennt aber document.all (wenn er sich als IE tarnt) oder? Jedenfalls führt er bei mir immer brav die if Abfrage...

        Grüße,
        Patrick

        1. hi

          Opera landet damit in der letzten Rubrik, konqueror unter IE5+

          Hmm.. Opera kennt aber document.all (wenn er sich als IE tarnt) oder? Jedenfalls führt er bei mir immer brav die if Abfrage...

          Opera nicht, aber konqueror :)
          übrigens ändert sich meines wissens nach bei beiden durch die Tarnung nichts außer dem ID-String.

          1. Moin!

            Opera landet damit in der letzten Rubrik, konqueror unter IE5+

            Hmm.. Opera kennt aber document.all (wenn er sich als IE tarnt) oder? Jedenfalls führt er bei mir immer brav die if Abfrage...

            Opera nicht, aber konqueror :)

            Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".

            übrigens ändert sich meines wissens nach bei beiden durch die Tarnung nichts außer dem ID-String.

            Naja, bis eben auf die Kenntnis über gewisse Objekte im DOM. ;)

            - Sven Rautenberg

            1. Hi,

              Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".

              übrigens ändert sich meines wissens nach bei beiden durch die Tarnung nichts außer dem ID-String.

              Naja, bis eben auf die Kenntnis über gewisse Objekte im DOM. ;)

              ;) ?
              ich find das eigentlich nicht so witzig, da es browser unabhängiges
              Javascript extrem aufwändig macht. also :-(

              bye eddie

            2. hi

              Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".

              ich hoffe, er kann dann nicht nur die Abfrage document.all beantworten, sondern kann auch die dazugehörigen Funktionen...

              1. Moin!

                Doch, auch Opera. Der kennt unter dem Tarnmantel "IE 5" sowohl document.all, als auch "jscript".

                ich hoffe, er kann dann nicht nur die Abfrage document.all beantworten, sondern kann auch die dazugehörigen Funktionen...

                Naja, zumindest wird das behauptet. Es ist aber kein IE 5 unter der Haube, sondern Opera. Das meiste wird funktionieren, der Teufel steckt vermutlich im Detail.

                Ich würde bei Abfragen immer zuerst auf getElementById prüfen, und nur wenn das nicht geht (IE4, NS4) auf Alternativen ausweichen.

                - Sven Rautenberg

  5. Hallo, Mischa.
    Es sind zuviele Fehler enthalten.
    1. Netscape 6 identifiziert sich als 5, nicht als 6. Es isat halt die 5. Generation.
    2. Der IE identifiziert sich als Version 4, egal ob 4, 5, oder 6.
    3. Opera kann verschiedene Identifizierungen annehmen. Schau mal die Einstellungsmöglichkeiten durch.

    Hier mal ein "Grundgerüst", den Opera hab ich rausgelassen:

    <script language="JavaScript" type="text/javascript">
    <!--
    var browser = navigator.userAgent.toLowerCase();
    var av = parseInt(navigator.appVersion);
    var an = parseFloat(navigator.appVersion);
    var moz = ((browser.indexOf('mozilla')!=-1) && (browser.indexOf('compatible')==-1) && (browser.indexOf('spoofer')==-1));
    var ie = (browser.indexOf('msie')!=-1); // IE allgemein
    var nnav = (moz && (av<5)); // Netscape bis 4.7
    var nn6 = (moz && (av==5)); // NN 6 speziell
    var ie5 = (ie && (av==4) && (browser.indexOf("msie 5.0")!=-1)); // IE 5.0
    var ie6 = (ie && (av==4) && (browser.indexOf("msie 6.0")!=-1)); // IE 6.0

    if(nn6)
    ...
    else if(nnav)
    ...
    else if(ie6)
    ...
    else if(ie5)
    ...
    else if(ie)
    ...

    //-->
    </script>

    Die alerts mußt du schon selbst einfügen :-)
    Sinnvoll wär es aber schon, wenn du die Seiten weitestgehenst so erstellst, daß du dir die Meldungen schenken kannst.

    Gruß