molily: Eindeutige Browsererkennung möglichst ohne Useragent

Beitrag lesen

Hallo,

if(opera || msie) { // Start (Browser OK)
     alert("wunderbar"); }
   else if(netscape) { // NS 4
     alert("igitt - ns4. hässlich *g*"); }
   } else if(dhtml) {

Mozilla meldet einen Syntaxfehler in dieser Zeile. Schau dir die Verschachtelung an:

if (opera || msie) {
    alert("wunderbar");
} else
    if(netscape) {
        alert("igitt - ns4. hässlich *g*");
    }
} else if(dhtml) {
...

Die einzig mögliche Form ist jedoch if (...) {...} else {...}, nicht noch mehrere else {...} dahinter.

Wenn du wirklich darauf stehst, wäre eher eine solche Verschachtelung sinnig (absichtlich in der Langform):

if (opera || msie) {
    alert("wunderbar");
} else {
    if (netscape) {
        alert("ns4");
    } else {
        if (dhtml) {
            alert("PROBLEMZONE");
        } else {
            if (badbrowser) {
                alert("sonstiger browser");
            }
        }
    }
}

Bzw. du willst wohl auf folgendes hinaus:

if (opera || msie || dhtml) {
    alert("wunderbar");
} else {
    if (netscape) {
        alert("ns4");
    } else {
        alert("badbrowser")
    }
}

Sozusagen. Das Problem liegt (selbstverständlich ;) in der Problemzone.

Dort ist kein Problem.

Ich möchte möglichst nicht mit irgendwelchen Useragent's arbeiten, die ich mühselig mittels regex-pattern auseinandernehmen müsste

Wieso solltest du das auch? Selbst wenn, es wäre nicht nötig, weil es auch andere zuverlässigere Abfragen gibt, siehe http://www.lipfert-malik.de/webdesign/tutorial/bsp/browser_js_test.html.

sondern nur eine schnelle und flexibele lösung

Mit welchem Ziel? Das ist immer der zentrale Punkt bei jeglichen JavaScript-Browserweichen.

sodass auch in z.B. Mozilla ein alert("wunderbar"); erscheinen kann und ich diesen browser nicht den Nichtidentifizierbaren zuschreiben muss.

Im Mozilla ist dhtml==true, wenn du den Fehler beseitigst.

Welchen Zweck hat die Identifizierung? Konqueror wird z.B. als MSIE erkannt.

Mathias