js學習總結----ajax兼容處理及惰性思想
阿新 • • 發佈:2017-08-01
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兼容處理及惰性思想