Eindeutige Browserweiche

The Garfieldius

Erfahrenes Mitglied
Die meisten Browserweichen arbeiten ja mit dem navigator Objekt. Allerdings lassen sich die Informationen, die man dadurch erhält verfälschen. Am einfachsten wohl mit Opera. Auch die Abfrage mit document.all hilft nicht weiter, da die meisten anderen Browser dieses Objekt, zwecks Kompatibilität, ja bereits Unterstützen.

Speziell für die erweiterten CSS Eigenschaften, wie z.B.: Transparenz, ziemlich wichtig.

Wie bekommt man also eine zuverlässige Browserabfrage. Beim IE funktioniert meiner Erfahrung nach folgendes sehr gut:

Javascript:
if (window.innerHeight == "undefined") // Internet Explorer
{ 
    if (document.getElementById != "undefined") // v5 oder höher
    {
        browser = "ie5";
    } 
    else
    {
        browser = "ie4";
    }
}



Mit welchen Methoden lassen sich Mozilla und Opera richtig abfragen?
 
Zuletzt bearbeitet:
Also Opera ermöglicht es schon mal sehr simpel per
Code:
if(window.opera)alert('Ich hab nen dicken Strickpulli an');
Bei Mozilla(besser gesagt bei GECKO-Browsern) gehts so:
Code:
if(window.pkcs11 || window.updateCommands)alert('Ich bin ein Lurch und krieche überall herum :P ');
 
Danke, das war genau das was ich gesucht habe!
Hab mir jetzt eine Funktion damit gebaut, funktioniert bestens. Ich poste sie hier, da man sowas immer wieder mal braucht.

Javascript:
function checkBrowser() {
    var str_browser = "";
    var int_version = parseInt(navigator.appVersion.substr(0,3);
    
    if (document.innerHeight == "undefined") {     
        if (document.getElementById != "undefined") {        
            str_browser = "ie";    
        } else {
            str_browser = "alt";    
        }
    } else if (window.pkcs11 != "undefined" || window.updateCommands != "undefined") {
        if (int_version >= 4) {        
            str_browser = "gecko";
        } else {        
            str_browser = "alt";
        }
    }
    else if (window.opera != "undefined") {
        if (int_version >= 4) {
            str_browser = "opera";
        } else {
            str_browser = "alt";
        }
    } else {
        str_browser = "alt";
    }
    
    return str_browser;
}

Jetzt fehlt nur noch eine Möglichkeit für Safari und Konqueror. Weiß da jemand was? Auch wenn die Dinger nur einen kleinen Anteil haben, sollte man schon eine Überprüfung, zumindest anbieten. Speziell dann wenn die Zielgruppe diese gerne benutzt (z.B: Safari => Grafiker)
 
Hi,

in Zeile drei fehlt eine abschliessende Klammer. Ausserdem solltest Du Vergleiche auf "undefined" mit typeof einleiten.
Code:
if(typeof(object) == "undefined"){ ... }
Kristof Lipfert hat eine sehr informative Seite zur Browsererkennung - hier.

Ciao
Quaese
 

Neue Beiträge

Zurück