Messmar: Logischer Fehler bei der Abfrage

Hallo zusammen,

kann jemand mir bitte helfen und evtl. sagen wo der logische Fehler  sich hier befindet?

Ich checke zunächst das System, und dann der Browser, damit ich entsprechend die richtigen CSS-Files laden lasse.

Die Abfrage funktioniert zwar, doch es greifen für den NS die Firefox-CSS und nicht die, die für NS gedacht sind.

Code:

<script language="JavaScript" type="text/javascript">
system = (navigator.appVersion.indexOf("Mac")==-1)?"PC":"MAC";

browser = (navigator.appName.indexOf("Microsoft")==-1)?(navigator.userAgent.indexOf("Mozilla/5.")==-1)?(navigator.userAgent.indexOf("Firefox/1.0.4")==-1)?"NS":"NS4":"FFoX":"IE";
BrowserOnSystem = browser + "on" + system;
switch (BrowserOnSystem)
{
case "IEonPC":
document.write("<link rel=stylesheet type='text/css' href='css/ie_pc.css'>");
break;
case "NS4onPC":
document.write("<link rel=stylesheet type='text/css' href='css/ns_pc.css'>");
break;
case "FFoXonPC":
document.write("<link rel=stylesheet type='text/css' href='css/ffox_pc.css'>");
break;
case "IEonMAC":
document.write("<link rel=stylesheet type='text/css' href='css/ie_mac.css'>");
break;
case "NS4onMAC":
document.write("<link rel=stylesheet type='text/css' href='css/ns_mac.css'>");
break;
default:
document.write("<link rel=stylesheet type='text/css' href='css/ie_pc.css'>");
break;
}
</script>

Die FireFox-CSS passen auch für NS, aber der Browser sollte darauf nicht zugreifen. Es stimmt etwas bei der Abfrage nicht und ich kann es iregendwie nicht hinbekommen.

Vielen Dank und Gruß

Messmar

  1. Hej,

    browser = (navigator.appName.indexOf("Microsoft")==-1)?(navigator.userAgent.indexOf("Mozilla/5.")==-1)?(navigator.userAgent.indexOf("Firefox/1.0.4")==-1)?"NS":"NS4":"FFoX":"IE";

    Sag mal? Wenn ich noch Firefox 1.0.3 installiert habe,

    default:
    document.write("<link rel=stylesheet type='text/css' href='css/ie_pc.css'>");

    drehst du mir ein IE-css an? Nö, nö, da deaktiviere ich doch lieber JS und bekomme eben gar nichts von deiner Bemühung bezüglich des Layouts zu sehen.

    Abgesehen, davon dass es unnötig ist css browserabhängig per JS auszuliefern, sollst du prüfen was der Browser kann und nicht als was er sich ausgibt.

    Es stimmt etwas bei der Abfrage nicht und ich kann es iregendwie nicht hinbekommen.

    Ich bin mir nicht sicher, aber ich habe auch noch nie gesehen, dass ein solches Konstrukt wie dieses:
    browser = (navigator.appName.indexOf("Microsoft")==-1)?(navigator.userAgent.indexOf("Mozilla/5.")==-1)?(navigator.userAgent.indexOf("Firefox/1.0.4")==-1)?"NS":"NS4":"FFoX":"IE";
    zulässig ist.

    Beste Grüße
    Biesterfeld

    --
    "Nein! ... Nein, schneller, leichter, verführerischer die dunkle Seite ist."
    1. Hej,

      Ich bin mir nicht sicher, aber ich habe auch noch nie gesehen, dass ein solches Konstrukt wie dieses:
      browser = (navigator.appName.indexOf("Microsoft")==-1)?(navigator.userAgent.indexOf("Mozilla/5.")==-1)?(navigator.userAgent.indexOf("Firefox/1.0.4")==-1)?"NS":"NS4":"FFoX":"IE";
      zulässig ist.

      Gut, nun hab ich es verstanden, da steht:

      Wenn der Useragent den String "Microsoft" enthält setze browser = "IE", sonst
      wenn der Useragent den String "Mozilla/5." enthält setze browser = "FFox", sonst
      wenn der Useragent den String "Firefox/1.0.4" enthält setze browser = "NS4", sonst
      setze browser = "NS"!

      Sicher dass du das wolltest?

      Bitte verwende switch-case oder if-else-if-else-Konstrukte um sowas vorzubeugen.

      Meine restliche Kritik an deinem Vorgehen, bleibt natürlich davon unbenommen.

      Beste Grüße
      Biesterfeld

      --
      "Nein! ... Nein, schneller, leichter, verführerischer die dunkle Seite ist."