Вообще, мой вариант почти без изменений списан с MicrosoftAjaxLibrary. Уж они сами-то точно знают, что нужно для их браузера.
Вот их вариант (Microsoft.XMLHTTP вообще нет):
if (!window.XMLHttpRequest) {
window.XMLHttpRequest = function window$XMLHttpRequest() {
var progIDs = [ 'Msxml2.XMLHTTP.3.0', 'Msxml2.XMLHTTP' ];
for (var i = 0, l = progIDs.length; i < l; i++) {
try {
return new ActiveXObject(progIDs[i]);
}
catch (ex) {
}
}
return null;
}
}