Homepage de.comp.lang.javascript
Homepage
de.comp.lang.javascript

FAQ de.comp.lang.javascript

FAQ
de.comp.lang.javascript

 

 

Bitte verwenden Sie als Einstiegsadresse in diese FAQ die Homepage der Newsgroup de.comp.lang.javascript. Der Aufenthaltsort dieser Seiten hier kann sich ohne Vorwarnung ändern.
 

 

Wie kann ich Browser unterscheiden?

Die unterschiedlichen Fähigkeiten der Browser - und deren sind es inzwischen nicht wenige - machen es erforderlich, damit umzugehen. Eine oft gesehene Möglichkeit der Unterscheidung ist die mit Hilfe des navigator-Objektes. Zu empfehlen ist die jedoch nur sehr eingeschränkt, weil sie sehr detailliertes und immer aktuelles Wissen über die gerade im Umlauf befindlichen Browser voraussetzt.

Besser ist es, man untersucht die Fähigkeiten, sprich: Kenntnis bestimmter Objekte, des Browsers. Ganz sauber ist es natürlich, jedes Objekt vor Verwendung auf Vorhandensein zu überprüfen. Ob das sehr praktikabel und immer erforderlich ist? Oft genügt es, den Browser in eine Kathegorie einzuordnen, dazu evtl. eine Kombination aus Frage nach Fähigkeit und Auswertung des navigator-Objektes zu verwenden.

Als für viele Einsatzfälle passend hat sich die von Johann Burkard unermüdlich gepostete Lösung erwiesen::

ie = (    (document.all) 
       && (window.offscreenBuffering) ) ? true : false;
nn = (    (document.captureEvents) 
       && (!document.getElementById)  ) ? true : false;
mz = (    (document.getElementById) 
       && (!document.all) 
       && (document.documentElement)  ) ? true : false;
op = (    (document.getElementById) 
       && (navigator.userAgent.indexOf('Opera') != -1) ) ? true : false;

Natürlich hat man damit nicht alle möglichen Varianten abgedeckt, vielleicht den einen oder anderen Browser nicht erwischt. Ergänzend sollte man also über

   ( (!ie) && (!nn) && (!mz) && (!op) )

nachdenken.
Ob eine noch detailliertere Unterscheidung notwendig wird oder vielleicht eine einfachere nach getElementByID, document.all, document.layers und dem verbleibenden Rest schon ausreicht, muss man im konkreten Fall überlegen; ein allgemeingültiges Rezept läßt sich schwer oder gar nicht angeben.

top

Diese Seite ist Teil der de.comp.lang.javascript FAQ. Die Einstiegsadresse lautet http://www.dcljs.de/. Der Text der Seite wurde erstellt von Christine Kühnel (©).

 ______ letzte Änderung: 12/2012 ______ 

 
© S. Mintert, Ch. Kühnel