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();
複製代碼