XHR pro IE6
Se způsobem ošetření XMLHttpRequest v IE6 přišel Nicolas Faugout
.
Jeho trik
je velmi prostý:
Na začátek JS umístíte tento kód:
if (!XMLHttpRequest) {
window.XMLHttpRequest = function() {
return new ActiveXObject('Microsoft.XMLHTTP');
}
}
Tímto způsobem si zajistíte, že bude existovat funkce XMLHttpRequest() i v IE6 a IE5.5, tedy v prohlížečích, které nemají XHR zabudován. Použití je pak prosté:
var ajax = new XMLHttpRequest();
(via Ajaxian
)
- Chcete-li přidat komentář, přihlašte se nebo se zaregistrujte.

Není to konstrukční funkce
Problém vidím v tom, že XMLHttpRequest není vytvořena jako konstrukční funkce, ale jako běžná funkce vracející objekt. Takže v IE to na rozdíl od ostatních prohlížečů bude fungovat i bez operátoru
newa(new XMLHttpRequest() instanceof XMLHttpRequest)naopak bude vracetfalse.Bohužel nevím, jak to vyřešit, protože prosté
window.XMLHttpRequest = function() { }; window.XMLHttpRequest.prototype = new ActiveXObject('Microsoft.XMLHTTP');nefunguje. Složitější přístupwindow.XMLHttpRequest = function() { var xxx = new ActiveXObject('Microsoft.XMLHTTP'); this.open = function (method, url) { return xxx.open(method, url); }; }dobře funguje pro metody, ale nedá se použít pro vlastnosti. Čtené vlastnosti se dají aktualizovat v metodách, které je mění (this.status = (typeof xxx.status != 'unknown' ? xxx.status : undefined)), ale jak vyřešit přiřazení doonreadystatechange, mě nenapadá, protože IE nemásetter.