在工作中遇到,Microsoft.XMLHTTP的XHR对象,只有第一次的访问才能获取到XHR对象,之后的创建,都无法获取XHR对象,故查找相关的书籍,在《javascript高级程序设计》中,找到通用的方法。
function CreateXHR() {
if ("undefined" != typeof XMLHttpRequest)
{
return new XMLHttpRequest();
} else if ("undefined" != typeof ActiveXOjbect){
if ("string" != typeof arguments.callee.activeXString){
var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"];
var i, len;
for (i = 0, len = versions.length; i < len; i++){
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
} catch(ex){
// 跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
} else {
throw new Error("No XHR object available.");
}
}
假如你只想支持IE7及更高版本,那么大可丢掉红字部分的内容,而只用原生的XHR实现。如果你必须还要支持IE的早期版本,那么则可以在这个createXHR()函数中假如对原生XHR函数的支持。