Hi zusammen, hab hier etwas JS-Code den ich gern irgendwie zusammenfassen möchte um mein Script möglichst klein zu halten. Hab schon verschiedene sachen versucht aber ohne Erfolg :/. Hat von Euch jemand eine Idee wie ich folgenden Code vereinfachen kann?
if (window.XMLHttpRequest) { XMLHTTP1 = new XMLHttpRequest(); XMLHTTP2 = new XMLHttpRequest(); XMLHTTP3 = new XMLHttpRequest(); XMLHTTP4 = new XMLHttpRequest(); } else if (window.ActiveXObject) { try { XMLHTTP1 = new ActiveXObject("Msxml2.XMLHTTP"); XMLHTTP2 = new ActiveXObject("Msxml2.XMLHTTP"); XMLHTTP3 = new ActiveXObject("Msxml2.XMLHTTP"); XMLHTTP4 = new ActiveXObject("Msxml2.XMLHTTP"); } catch (ex) { try { XMLHTTP1 = new ActiveXObject("Microsoft.XMLHTTP"); XMLHTTP2 = new ActiveXObject("Microsoft.XMLHTTP"); XMLHTTP3 = new ActiveXObject("Microsoft.XMLHTTP"); XMLHTTP4 = new ActiveXObject("Microsoft.XMLHTTP"); } catch (ex) {} } }
function getAjaxObject(){ var ajaxO = null; if (window.XMLHttpRequest) ajaxO = new XMLHttpRequest(); else if (window.ActiveXObject) { try { ajaxO = new ActiveXObject("Msxml2.XMLHTTP"); } catch (ex) { try { ajaxO = new ActiveXObject("Microsoft.XMLHTTP"); } catch (ex) {} } } return ajaxO; } </script>
Variante 2:
Etwas komplizierter. Solltest du nur verwenden wenn du es auch verstehst. "ajaxInit" ist ein Array was alle Inizialisierungsvarianten enthällt. Nun willst du 4 Variablen haben, also wird eine Schleife erzeugt die 4 mal durchlaufen wird. Diese probiert alle Varianten aus "ajaxInit" durch bis sie eine findet die funktioniert. Das Ergebnis wird in das window Objekt geschrieben welches u.a. alle Variablen enthällt die global definiert wurden. (es ist also egal ob ich "var a=0;" oder "window['a']=0;" schreibe. Mit "alert(a);" bekomme ich in beiden Fällen die "0" raus.
<script> var ajaxInit = [ function(){return new XMLHttpRequest();} , function(){return new ActiveXObject("Msxml2.XMLHTTP");} , function(){return new ActiveXObject("Microsoft.XMLHTTP");} ] for(var i=1; i<=4; i++) for(var k=0; k<ajaxInit.length; k++) try{ window["XMLHTTP"+i]=ajaxInit[k].call(); break; } catch (ex) {} </script>