IE7以前的版本不支持原生***XHR***对象
IE7以前的版本的XHR对象是经过MSXML库中的一个ActiveX对象实现的,这个MSXML库包括***MSXML2.XMLHttp,MSXML2.XMLHttp.3.0,MSXML2.XMLHttp.6.0***。javascript
IE7以前的版本建立XHR,实现函数以下:java
function creatXHR(){
if(typeof arguments.callee.activeXString != 'string'){
var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp'],
i,len;
for(i=0; len<versions.length; i<len; i++){
try{ //从最高版本开始建立,若是建立失败就catch,跳过,继续循环直到结束。
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
}catch(ex){
//跳过
}
}
}
return new ActiveXObject(arguments.callee.activeXString);
}
复制代码
IE7+,Firefox,Opera,Chrome,Safari。
以上的全部浏览器都支持原生的XHR对象,建立XHR对象以下:浏览器
ver XHR = new XMLHttpRequest();
复制代码
封装公用函数。
function createXHR(){
if(typeof XMLHttpRequest != 'undefined'){ //浏览器支持XMLHttpRwquest对象
return new XMLHttpRequest();
}else if(typeof ActiveXObject != 'undefined'){ //IE7如下,拥有ActiveXObject对象
if(typeof arguments.callee.activeXString != 'string'){
var versions = ['MSXML2.XMLHttp.6.0','MSXML2.XMLHttp.3.0','MSXML2.XMLHttp'],
i,len;
for(i=0; len<versions.length; i<len; i++){
try{
new ActiveXObject(versions[i]);
arguments.callee.activeXString = versions[i];
break;
}catch{
//跳过
}
}
};
return new ActiveXObject(arguments.callee.activeXString);
}else{ //全部对象都不存在
throw new Error("No XHR object available.")
}
};
var XHR = createXHR();
复制代码