1. 程式人生 > >js學習總結----ajax兼容處理及惰性思想

js學習總結----ajax兼容處理及惰性思想

null XML catch 學習總結 function logs nbsp class 重寫

封裝代碼如下:

// var xhr = null;
// //為了兼容IE6及更低的版本:如果第一個不支持,則瀏覽器會報錯,後面就不在執行了
// try{
//     xhr = new ActiveXObject("Microsoft.XMLHTTP");
// }catch(e){

// }
// if(new ActiveXObject("Microsoft.XMLHTTP")){
//     xhr = new ActiveXObject("Microsoft.XMLHTTP");
// }else if(new ActiveXObject("Msxm12.XMLHTTP")){
//     xhr = new ActiveXObject("Msxm12.XMLHTTP");
// }else if(new ActiveXObject("Msxm13.XMLHTTP")){ // xhr = new ActiveXObject("Msxm13.XMLHTTP"); // } //JS高階編程技巧之"惰性思想":能夠執行一次就搞定的不會執行多次 //createXHR:創建AJAX對象,兼容所有的瀏覽器 function createXHR(){ var xhr = null, flag = false, ary = [ function(){ return new XMLHttpRequest; },
function(){ return new ActiveXObject("Microsoft.XMLHTTP"); }, function(){ return new ActiveXObject("Msxm12.XMLHTTP") }, function(){ return new ActiveXObject("Msxm13.XMLHTTP"); } ];
for(var i = 0,len = ary.length;i<len;i++){ var curFn = ary[i]; try{ xhr = curFn(); //本次循環獲取的方法執行沒有出現錯誤:說明此方法是我想要的,我們下一次直接執行這個小方法即可,這就需要我們把createXHR重寫為小方法即可(完成後不需要判斷下面的,直接退出循環即可) createXHR = curFn; flag = true; break; }catch(e){ //本次循環獲取的方法執行出現錯誤:繼續執行下一次的循環 } } if(!flag){ throw new Error("your brower is not support ajax,please change your brower,try again!") } return xhr; }

js學習總結----ajax兼容處理及惰性思想