www.lipfert-malik.de>webdesign>tutorial>CSS für alle Browser>Browser JS Test Impressum

Browsererkennung durch JavaScript
Kristof Lipfert
Dipl.-Des.(FH)

Web-Design Beispiel zum Tutorial CSS für alle Browser, Browserweichen JavaScript

Browser sniffing, filter, detection und cross-over durch JavaScript

Der Code zur Browsererkennung per JavaScript:


 /*  Autor, Entwicklung 8/2002 Kristof Lipfert Duesseldorf    */
 /*  Version 2005-12-09                                  */

if(document.ids)x='nc4';
else if( document.all && !document.getElementById )x='ie4';
else if( window.opera && !document.createElement )x='op5';
else if( window.opera && window.getComputedStyle )  {
          if(document.createRange)x='op8';
            else if(window.navigate)x='op7.5';
                             else x='op7.2';                   }
else if( window.opera && document.compatMode )x='op7';
else if( window.opera && document.releaseEvents )x='op6';
else if( document.contains && !window.opera )x='kq3';
else if(window.pkcs11&&window.XML)x='f15';
else if( window.getSelection && window.atob )x='nn7';
else if( window.getSelection && !document.compatMode )x='nn6';
else if( window.clipboardData && document.compatMode )
  x=window.XMLHttpRequest? 'IE7' : 'IE6';
else if( window.clipboardData ){x='ie5';
     if( !document.createDocumentFragment ) x+='.5';
     if( document.doctype && !window.print ) x+='m';}
else if( document.getElementById && !document.all ) x='op4';
else if( document.images && !document.all ) x='nn3';
else if(document.clientWidth&&!window.RegExp)x='kq2';
else x='???';

Oder Browsereerkennung als Umsetzung der Erkennungs-Matrix über Arrays, angepasst für neuere Browser bis 2008:


<script type="text/javascript">
/*  Autor, Entwicklung 2003-2008 Kristof Lipfert Duesseldorf    */
/*  Version 20080522                                            */

check=[
['window.postMessage',
 'window.XMLHttpRequest&&(document.postMessage||window.external)',
 'document.compatMode',
 '(document.detachEvent||document.contentType)'],
['window.execScript','window.pkcs11','window.opera',
                                  'window.navigator&&window.navigator.vendor'],
[['IE 8','FF 3','Op 9.5','KDE?'],
 ['IE 7','FF 2','Op 9','KDE?'],
 ['IE 6','FF 1.5','Op 8','KDE/Safari 3'],
 ['IE 5x','NN 7','Op 7','KDE/Konqu. 3']]];
var j; var b; for(n=0;n<check[1].length;n++){if(!eval(check[1][n])==0)b=n;}
for(n=check[0].length;n>-1;n--){if(!eval(check[0][n])==0)j=n;}
document.write((j>-1&&b>-1)?check[2][j][b]:'Älterer Browser o. unbekannt.');

</script>

Beispiel einer weiteren Alternative des Browser-Sniffing:


<script type="text/javascript">
/*  Autor, Entwicklung 2/2004 Kristof Lipfert Duesseldorf    */

if(window.pkcs11){y='Netscape';
 if(document.ids){y+='-4'; 
   if(window.navigator.securityPolicy)y+='.7 /4.8';}
   else if(window.atob)y='-7'; 
    else y+='-6';}

else if(document.defaultCharset){y='Int.Explorer';
           if(document.compatMode)y+='-6';
           else if(window.createPopup)y+='-5.5';
           else if(document.uniqueID)y+='-5';
          else y='-4';}

else if(!document.createRange){y='Opera';
              if (!window.opera) y+='-4';
            else if(!window.print) y+='-5'; 
           else if(!document.createComment) y+='-6';
          else y+='-7';}

else if(document.namespaceURI) y='Konq';

</script>

Möglichkeit K-Meleon zu erkennen:


<!--  Autor, Entwicklung 2/2004 Kristof Lipfert Duesseldorf  -->

<script type="text/javascript">
    
    if(window.sidebar)var xxx=true;

</script>
<script type="text/javascript">

    if(window.updateCommands&&!xxx)alert('K-Meleon');

</script>

Der folgende Code zeigt, wie eine Styledatei mit Korrekturen dynamisch erzeugt werden kann. Grundsätzlich sind natürlich zur Styleanpassung Lösungen wie CSS-Weichen, die auch bei deaktiviertem JavaScript des Browsers greifen, vorzuziehen.


<!--  Autor, Entwicklung 2003 Kristof Lipfert Duesseldorf  -->

<script type="text/javascript">
var txt='<style>';

if(document.ids)txt+='#sampl{fontsize:14px}'; //NN4
else if(!document.getElementById)txt+='#sampl{margin-right:0;}'; //IE4
else if(document.clientWidth)txt+='#sampl{width:auto}'; // Konqeror
else if(window.pkcs11)txt+='#sampl{margin:auto}'; // Mozilla
else if(document.uniqueID) txt+='#sampl{padding:0}'; // IE
else  txt+='#sampl{width:auto}'; // Opera

if(txt.length>9)document.write(txt+'<\/style>');
</script>

Copyright © K.Lipfert Düsseldorf 2002-2008