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