mcmoe: Versionsabfrage des IE5 und IE6

hi,

es ist ja eigentlich ziemlich doof, dass "navigator.appVersion" im IE5 und im IE6 die browsergeneration als erstes zeichen im string liefert... und da ich auf eine versionskontrolle angewiesen bin (zwecks DOM-ünterstützung), suche ich nach einer eleganteren methode als einen quasi-parser zu benutzen welcher z.b. die "6" aus "(...)compatible; MSIE 6.0(...)" rausfängt.

lange rede kurzer sinn: gibt es eine spezielle funktion in javascript, die explizit die versionsnummer des IE liefert?
...oder noch anders gefragt: wie kann ich DOM erkennen lassen, ohne, dass ein "alter" browser einen error ausspuckt. ich möchte möglichst auf tricksereien mit "onerror" verzichten...

vielen dank im voraus und erklärt mich nicht für blöd wenn es allzu einfach ist - man sieht halt den wald vor lauter bäumen nicht ;)

mcmoe

  1. Hallo,

    lange rede kurzer sinn: gibt es eine spezielle funktion in javascript, die explizit die versionsnummer des IE liefert?
    ...oder noch anders gefragt: wie kann ich DOM erkennen lassen, ohne, dass ein "alter" browser einen error ausspuckt. ich möchte möglichst auf tricksereien mit "onerror" verzichten...

    Frage je nach Erfordernis ab:
    if(document.documentElement) {...}
    if(document.getElementById) {...}
    if(document.getElementsByTagName) {...}
    ...

    Wenn es unbedingt eine Abfrage auf IE 5 oder 6 sein soll:
    if(navigator.userAgent.indexOf("MSIE 5") != -1) {//IE 5}
    if(navigator.userAgent.indexOf("MSIE 6") != -1) {//IE 6}

    wobei letztere Strings auch von anderen Browsern geliefert werden koennen bzw. komplette Fakes sein koennen ...

    MfG, Thomas

    1. hi,

      if(document.documentElement) {...}
      if(document.getElementById) {...}
      if(document.getElementsByTagName) {...}

      das liefert aber zumindest unter NN4 einen "javascript error", habs eben selbst gesehen...
      einen IE4 habe ich momentan nicht zur verfügung - was sagt der zu "if(document.getElementById)"?

      mcmoe

      1. Hallo,

        if(document.documentElement) {...}
        if(document.getElementById) {...}
        if(document.getElementsByTagName) {...}

        das liefert aber zumindest unter NN4 einen "javascript error", habs eben selbst gesehen...

        Das sollte keinen Error liefern, weil die if-Abfrage entweder true oder false ergibt. Die Klammern mit den Punkten ist natuerlich der Inhalt, wenn das Ergebnis true ist.

        einen IE4 habe ich momentan nicht zur verfügung - was sagt der zu "if(document.getElementById)"?

        Kennt er nicht.

        MfG, Thomas

        1. Hallo,

          das liefert aber zumindest unter NN4 einen "javascript error", habs eben selbst gesehen...

          Das sollte keinen Error liefern, weil die if-Abfrage entweder true oder false ergibt. Die Klammern mit den Punkten ist natuerlich der Inhalt, wenn das Ergebnis true ist.

          tut der navigator aber ;)

          statuszeile:
          "javascript error. type javascript: (...)"

          ...aber trotzdem 1000 dank für deine vorschläge - hat mich schon um einiges weitergebracht.

          gruß,
          mcmoe

  2. lange rede kurzer sinn: gibt es eine spezielle funktion in javascript, die explizit die versionsnummer des IE liefert?
    ...oder noch anders gefragt: wie kann ich DOM erkennen lassen, ohne, dass ein "alter" browser einen error ausspuckt. ich möchte möglichst auf tricksereien mit "onerror" verzichten...

    Eine Browserabfrage ist abhängig vom Zweck, den sie erfüllen soll.

    Ich gehe bei deiner Frage eher davon aus, daß es nicht um "document.layers", "document.all" und "document.getElementById" (Netscape gegen IE gegen W3C-DOM) geht, sondern daß du explizit für den IE 6 etwas mehr machen willst, was nur dieser kann.

    Ich empfehle für sowas immer das "Ultimate client-side JavaScript client sniff". Wenn du das als Suchbegriff in Google eingibst, erhälst du eine Seite bei entweder Mozilla oder Netscape, welches die aktuelle Version eines Javascriptes bietet, welches praktisch alles erkennt, was man über den benutzten Browser herausfinden kann: Betriebssystem, Browsertyp (Netscape, IE, Opera, AOL, WebTV), Versionsnummer, etc. Ist so ungefähr 11 KB groß und prima als externes Javascript eingebunden. Damit sollte sich ein IE 6 prima von einem IE 5 unterscheiden lassen.

    Wenn die Skriptgröße nervt, kannst du auch ohne Probleme die IE-Abfrage isolieren.

    - Sven Rautenberg