Georg Gruber: IE 6 wird nicht erkannt ?!?

Ich habe ein Problem mit einer Browsererkennung,
ich will überprüfen ob es entweder Internet Explorer 5 oder neuer
oder Netscape 6 oder neuer ist, ich habe dazu das Script vom
Dreamweaver benutzt, das auch funktioniert hat, nur bei Internet Explorer 6 macht er ein paar mal Fehler, könnt ihr mir helfen warum?

Script und Aufruf schaut so aus:

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

function MM_checkBrowser(NSvers,NSpass,NSnoPass,IEvers,IEpass,IEnoPass,OBpass,URL,altURL) { //v4.0
  var newURL='', verStr=navigator.appVersion, app=navigator.appName, version = parseFloat(verStr);
  if (app.indexOf('Netscape') != -1) {
    if (version >= NSvers) {if (NSpass>0) newURL=(NSpass==1)?URL:altURL;}
    else {if (NSnoPass>0) newURL=(NSnoPass==1)?URL:altURL;}
  } else if (app.indexOf('Microsoft') != -1) {
    if (version >= IEvers || verStr.indexOf(IEvers) != -1)
     {if (IEpass>0) newURL=(IEpass==1)?URL:altURL;}
    else {if (IEnoPass>0) newURL=(IEnoPass==1)?URL:altURL;}
  } else if (OBpass>0) newURL=(OBpass==1)?URL:altURL;
  if (newURL) { window.location=unescape(newURL); document.MM_returnValue=false; }
}
//-->
</script>

Aufruf im Body:
onLoad="MM_checkBrowser(5.0,1,0,5.0,1,0,0,'index/flashkonfig.htm','');return document.MM_returnValue"

und eben beim IE6 (vielleicht auch nur auf bestimmten Systemen ?!)kommt er nicht drüber.

Beispiel unter http://www.schigymnasium-stams.at

Bitte um eure Hilfe.

  1. Hi,

    mit der MM-Browsererkennung wird fast jeder Probleme haben. Noch komplizierter, bzw. kompakter geht's fast nicht mehr. Sorry, ich hab auf Anhieb leider auch keine Ahnung, warum es nicht funzt. Hast Du es beim onload schon mal mit 6 statt 5 versucht? Ich empfehle Dir außerdem, dass aktuelle für DW4 (http://www.macromedia.com) runterzuladen. Das kommt soweit ich weiß auch mit IE6 und NN6 klar...

    Bye,
    Danny

  2. Hallo Welt,

    so sieht's doch schon gleich verständlicher aus? ;-)

    function MM_checkBrowser(NSvers, NSpass, NSnoPass, IEvers, IEpass, IEnoPass, OBpass, URL, altURL) // v4.0
    {
     var newURL = '';
     var verStr = navigator.appVersion;
     var app = navigator.appName;
     var version = parseFloat(verStr);
     // NS:
     if (app.indexOf('Netscape') != -1)
     {
      if (version >= NSvers)
      {
       if (NSpass>0) newURL = (NSpass==1) ? URL:altURL;
         }
      else
      {
       if (NSnoPass>0) newURL=(NSnoPass==1) ? URL:altURL;
      }
     }
     // IE:
     else if (app.indexOf('Microsoft') != -1)
     {
      if (version >= IEvers || verStr.indexOf(IEvers) != -1)
      {
       if (IEpass>0) newURL = (IEpass==1) ? URL:altURL;
      }
      else
      {
       if (IEnoPass>0) newURL = (IEnoPass==1) ? URL:altURL;
         }
     }
     // sonstige:
     else if (OBpass>0) newURL = (OBpass==1) ? URL:altURL;
     // ggf. weiterleiten:
     if (newURL)
     {
      window.location = unescape(newURL);
      document.MM_returnValue = false;
     }
    }

  3. <ScriptError>

    Hi,

    hab's mal schnell debugged. Das Script ist Müll. Der IE 6.0 gibt sich ja als Version 4.0 aus: 4.0 (compatible; MSIE 6.0; etc.)

    Im Code wird aber falsch geprüft, es wird nur die Versions-Nr. und nicht der komplette String angefragt. Und weil 4.0 natürlich kleiner als Deine Angabe 5.0 ist, kann es nicht funzen...

    </ScriptError>

  4. hi

    ich will überprüfen ob es entweder Internet Explorer 5 oder neuer
    oder Netscape 6 oder neuer ist..

    und alles andere in's Datennirvana schicken? Genau macht das Script nämlich. So macht das weitaus mehr Sinn:

    if(document.getElementById){location.href="index/flashkonfig.htm";}
    else{window.alert("Der Autor mag euch nicht, aber ihr verpasst nichts. Besucht doch eine sinnvollere Seite!);}

    Grüße aus Bleckede

    Kai