Dieser erzeugt bei jedem Request ein neues Objekt, immer und immer wieder. Obwohl du hier mit einem einzigen Request Objekt auskommen könntest. Problematisch wird das, dass du bei jedem abschicken des Formular ein neues Request Objekt erzeugst ohne das das vorherige fertig ist. Ich kann mir vorstellen, dass da der IE irgendwann rumzickt. Aber wie gesagt, einfacher wäre die ganze Sache mit einem einzigen Objekt.
Ob einfacher oder nicht, darüber kann man getrennter Meinung sein. Eleganter finde ich die Variante mit dem lokalen XHR, aber darüber kann man auch streiten.
Auf jeden Fall ist es so, dass man dem IE zwar auf die Sprünge helfen muss, er dann aber auch den Speicher für das XHR-Objekt wieder freigibt.
var count = 0;
function xhr(url) {
var request=null;
if(window.ActiveXObject){
request=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest){
request=new XMLHttpRequest();
}
request.open("GET", url, true);
request.onreadystatechange=function(){
if(request.readyState==4){
document.getElementById("count").innerHTML=++count;
delete request;
request=null
}
}
request.send(null);
}
window.onload=function(){setInterval(function(){xhr("xhr.xhr");},500);};