ayhan: komisches ergebnis bei browser-erkennung

hallo,

ich habe ein komisches problem bei der browser- und betriebssystem-erkennung.

ich möchte, daß die funktion DoPrompt() für den internet explorer ab version 4 unter windows unterschiedlich deklarieren als für andere browser bzw. andere betriebssysteme, daher habe ich eine IF-abfrage dazwischengeschaltet.

das problem ist nun. beim internet explorer (6.0 unter windows), der ja die IF-bedingung erfüllt, bekomme ich dasselbe ergebnis wie für die anderen browser. lasse ich aber den ELSE-teil, dann erhalte ich das gewünschte ergebnis, aber bei den anderen browsern passiert (logischerweise) nichts.

woran kann das liegen???

nachfolgend der code, vielleicht kann ja der eine oder die andere mir helfen.

grüße
ayhan

<SCRIPT language="JavaScript" type="text/javascript">
<!--

var clientPC = navigator.userAgent.toLowerCase(); // Get client info
var clientVer = parseInt(navigator.appVersion); // Get browser version

var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                        && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
                        && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));

var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
var is_mac      = (clientPC.indexOf("mac")!=-1);

if (clientVer >= 4 && is_ie && is_win) {
function DoPrompt(action,formname) {
...mach das...
}
} else {
function DoPrompt(action,formname) {
...mach was anderes...
}
}
//-->
</SCRIPT>

  1. im richtigeren deutsch:

    hallo,

    ich habe ein komisches problem bei der browser- und betriebssystem-erkennung.

    ich möchte die funktion DoPrompt() für den internet explorer ab version 4 unter windows unterschiedlich deklarieren als für andere browser bzw. andere betriebssysteme, daher habe ich eine IF-abfrage dazwischengeschaltet.

    das problem ist nun. beim internet explorer (6.0 unter windows), der ja die IF-bedingung erfüllt, bekomme ich dasselbe ergebnis wie für die anderen browser. lasse ich aber den ELSE-teil, dann erhalte ich das gewünschte ergebnis, aber bei den anderen browsern passiert (logischerweise) nichts.

    woran kann das liegen???

    nachfolgend der code, vielleicht kann ja der eine oder die andere mir helfen.

    grüße
    ayhan

    <SCRIPT language="JavaScript" type="text/javascript">
    <!--

    var clientPC = navigator.userAgent.toLowerCase(); // Get client info
    var clientVer = parseInt(navigator.appVersion); // Get browser version

    var is_ie = ((clientPC.indexOf("msie") != -1) && (clientPC.indexOf("opera") == -1));
    var is_nav = ((clientPC.indexOf('mozilla')!=-1) && (clientPC.indexOf('spoofer')==-1)
                            && (clientPC.indexOf('compatible') == -1) && (clientPC.indexOf('opera')==-1)
                            && (clientPC.indexOf('webtv')==-1) && (clientPC.indexOf('hotjava')==-1));

    var is_win = ((clientPC.indexOf("win")!=-1) || (clientPC.indexOf("16bit") != -1));
    var is_mac      = (clientPC.indexOf("mac")!=-1);

    if (clientVer >= 4 && is_ie && is_win) {
    function DoPrompt(action,formname) {
    ...mach das...
    }
    } else {
    function DoPrompt(action,formname) {
    ...mach was anderes...
    }
    }
    //-->
    </SCRIPT>

    1. nachfolgend der code, vielleicht kann ja der eine oder die andere mir helfen.

      Browsererkennung in der Art wie du sie vornimmst, sind in aller Regel nicht nötig, da man z.b bei JS besser auf die Objekte prüft, die man verwenden möchte oder bei CSS die Browser mit unterschiedlichen Stylesheets füttert.

      Struppi.

  2. Hallo ayhan,

    var clientPC = navigator.userAgent.toLowerCase(); // Get client info
    var clientVer = parseInt(navigator.appVersion); // Get browser version

    lass dir das doch mal per alert ausgeben, dann wirst du feststellen, das IE6 als Version '4' zurückliefert. Die komplette Kennung sieht so aus: "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0; QXW0339m)" und davon wird vermutlich das 'Mozilla/4.0' hergenommen, um die Version zu ermitteln.

    Grüße aus Nürnberg
    Tobias [der sich fragt, für was man sowas überhaupt braucht]