/** * Genererer og returnerer et nytt XMLHttpRequest objekt. * * Denne metoden oppretter under første kjøring et XMLHttpRequest objekt, * og bruker dette i ettertid til å lage nye objekter ut i fra. Altså, det * går ikke igjennom deteksjonsmølla mer enn en gang, men gjennbruker det objektet * den laget i starten. * * @return {XMLHttpRequest | null} Nytt XMLHttpRequest objekt, eller null hvis manglende browserstøtte */ getXhrObject: (function() { // Microsoft Acitve X kontrollere var xhro = undefined, i; var msxml = [ 'MSXML2.XMLHTTP.3.0', 'MSXML2.XMLHTTP', 'Microsoft.XMLHTTP' ]; var initXhro = function() { // Setter XMLHttpRequest object try { xhro = new window.XMLHttpRequest(); } catch (e) { // Antageligvis IE .. prøver forskjellige Acitve X kontrollere for ( i = 0, len = msxml.length; i < len; ++i ) { try { xhro = new ActiveXObject(msxml[i]); break; } catch(e) {} } } // Sjekker om vi har fått ut et objekt, eller om vi skal sette xhro til null som et signal på at // vi har prøvd, men ikke fått tak i et. if ( xhro === undefined ) { xhro = null; } }; return function() { var F = function() {}; // Sjekker om vi har prøvd å opprette et XMLHttpRequest objekt før, hvis ikke prøver vi å generere ett if ( xhro === undefined ) { initXhro(); } // Sjekker om vi har et XMLHttpRequest eller ikke.. Hvis vi har et returnerer vi en kopi av dette objektet if ( xhro !== null ) { F.prototype = xhro; return new F(); } return null; // Vi har ikke klart å opprette et XMLHttpRequest object }; })()