Stefan: Browserweiche kompakter programmieren

Beitrag lesen

Hallo,

Ich habe mir mal eine Browserweiche in Javascript zusammengebastelt, die ich gerne etwas kompakter gestalten möchte, um die Ladezeit zu verkürzen (aktuell ist die Weiche 281 Zeilen lang und das finde ich erheblich zu lang).

Hier der gesamte Quelltext:

// // Variablen deklarieren //

var sysWin  = false; var sysMac  = false; var chk     = true; var bNav    = false; var bMsi    = false; var bMoz    = false; var bOpe    = false; var browser = new Array();

// Mozilla

browser["vIsMoz"]    = false; browser["vIsMoz1_0"] = false; browser["vIsMoz1_1"] = false; browser["vIsMoz1_2"] = false; browser["vIsMoz1_3"] = false; browser["vIsMoz1_4"] = false; browser["vIsMoz1_5"] = false; browser["vIsMoz1_6"] = false;

// Internet Explorer

browser["vIsMsi"]  = false; browser["vIsMsi3"] = false; browser["vIsMsi4"] = false; browser["vIsMsi5"] = false; browser["vIsMsi6"] = false;

// Netscape Navigator

browser["vIsNav"]   = false; browser["vIsNav2"]  = false; browser["vIsNav3"]  = false; browser["vIsNav4"]  = false; browser["vIsNav4x"] = false; browser["vIsNav6"]  = false; browser["vIsNav7"]  = false;

// Opera

browser["vIsOpe"]  = false; browser["vIsOpe2"] = false; browser["vIsOpe3"] = false; browser["vIsOpe4"] = false; browser["vIsOpe5"] = false; browser["vIsOpe6"] = false;

// // userAgent auslesen //

var uAgent = navigator.userAgent.toLowerCase();

// // appVersion feststellen //

var vNumber  = parseInt(navigator.appVersion); var vNumber2 = parseFloat(navigator.appVersion);

// // System feststellen //

if ((uAgent.indexOf("win")!= -1) || (uAgent.indexOf("16bit")!= -1))   sysWin = true; else   if (uAgent.indexOf("mac")!= -1)     sysMac = true;

if ((sysWin == false) && (sysMac == false))   sysWin =true;

// // Browser feststellen //

if ((uAgent.indexOf('mozilla') != -1) && (uAgent.indexOf('spoofer')== -1) && (uAgent.indexOf('compatible') == -1) && (uAgent.indexOf('opera') == -1)) {   if ((uAgent.indexOf('rv:1.') != -1) && (uAgent.indexOf("netscape") == -1))     bMoz = true;   else     bNav = true; }

if ((uAgent.indexOf("msie") != -1) && (uAgent.indexOf("opera") == -1))   bMsi = true;

if (uAgent.indexOf("opera") != -1)   bOpe = true;

// // Mozilla-Version //

if (chk && bMoz) {   if (uAgent.indexOf("rv:1.6") != -1)   {     browser["vIsMoz1_6"] = true;     chk                  = false;   }   else     if (uAgent.indexOf("rv:1.5") != -1)     {       browser["vIsMoz1_5"] = true;       chk                  = false;  }  else    if (uAgent.indexOf("rv:1.4") != -1)    {         browser["vIsMoz1_4"] = true;   chk                  = false;    }    else      if (uAgent.indexOf("rv:1.3") != -1)      {           browser["vIsMoz1_3"] = true;           chk = false;         }         else           if (uAgent.indexOf("rv:1.2") != -1)           {             browser["vIsMoz1_2"] = true;             chk                  = false;           }           else             if (uAgent.indexOf("rv:1.1") != -1)             {               browser["vIsMoz1_1"] = true;               chk                  = false;             }             else               if (uAgent.indexOf("rv:1.0") != -1)               {                 browser["vIsMoz1_0"] = true;                 chk                  = false;               }               else               {                 browser["vIsMoz"] = true;                 chk               = false;               } }

// // Netscape Navigator-Version //

if (chk && bNav) {   if (uAgent.indexOf("netscape/7") != -1)   {     browser["vIsNav7"] = true;     chk = false;   }   else     if ((vNumber == 5) && (uAgent.indexOf("netscape6") != -1))     {       browser["vIsNav6"] = true;       chk                = false;     }     else       if ((vNumber >= 4) && (vNumber < 5))       {         browser["vIsNav4x"] = true;   chk                 = false;       }       else         if ((vNumber == 4) && (uAgent.indexOf("netscape4") != -1))         {           browser["vIsNav4"] = true;           chk                = false;         }         else           if (vNumber == 3)           {             browser["vIsNav3"] = true;             chk = false;           }           else             if (vNumber == 2)             {               browser["vIsNav2"] = true;               chk                = false;             }             else               if ((uAgent.indexOf(";nav") != -1) || (uAgent.indexOf("; nav") != -1))               {                 browser["vIsNav"] = true;                 chk               = false;               }               else               {                 browser["vIsNav"] = true;                 chk               = false;               } }

// // Internet Explorer-Version //

if (chk && bMsi) {   if ((vNumber >= 4) && (uAgent.indexOf("msie 6.") != -1))   {     browser["vIsMsi6"] = true;     chk                = false;   }   else     if ((vNumber >= 4) && (uAgent.indexOf("msie 5.") != -1))     {       vNumber == 5;       browser["vIsMsi5"] = true;       chk                = false;     }     else       if (((vNumber == 4) || (vNumber >= 4)) && (uAgent.indexOf("msie 4") != -1))       {         browser["vIsMsi4"] = true;   chk                = false;       }       else         if (vNumber < 4)         {           browser["vIsMsi3"] = true;           chk                = false;         }         else         {           browser["vIsMsi"] = true;           chk               = false;         } }

// // Opera-Version //

if (chk && bOpe) {   if ((uAgent.indexOf("opera 6") != -1) || (uAgent.indexOf("opera/6") != -1))   {     browser["vIsOpe6"] = true;     chk                = false;   }   else     if ((uAgent.indexOf("opera 5") != -1) || (uAgent.indexOf("opera/5") != -1))     {       browser["vIsOpe5"] = true;       chk                = false;     }     else       if ((uAgent.indexOf("opera 4") != -1) || (uAgent.indexOf("opera/4") != -1))       {         browser["vIsOpe4"] = true;         chk                = false;       }       else         if ((uAgent.indexOf("opera 3") != -1) || (uAgent.indexOf("opera/3") != -1))         {           browser["vIsOpe3"] = true;           chk                = false;         }         else           if ((uAgent.indexOf("opera 2") != -1) || (uAgent.indexOf("opera/2") != -1))           {             browser["vIsOpe2"] = true;             chk                = false;           }           else           {             browser["vIsOpe"] = true;             chk               = false;           } }

Wie kann ich den Code kompakter schreiben ?

Gruss, Stefan