Ajax中创建XMLHttpRequest对象的时候,为了兼容不同的浏览器,总是需要写不少的代码。下面采用一种更高效的工厂模式把定义XMLHttpRequest对象的功能进行封装,这样只需要调用createXMLRequestObject()方法就可以根据当前的浏览返回一个XMLHttpRequest对象。
1 function createXMLRequestObject(){ 2 //创建兼容不同浏览器和版本函数数组 3 var XMLHttpFactories = [ 4 function(){return new XMLHttpRequest()}, 5 function(){return new ActiveXObject("Msxml2.XMLHTTP")}, 6 function(){return new ActiveXObject("Msxml3.XMLHTTP")}, 7 function(){return new ActiveXObject("Microsoft.XMLHTTP")} 8 ]; 9 var xmlhttp =false; 10 //尝试调用一种定义函数,如果成功则返回,否则继续下一种进行尝试 11 for(var i =0;i<XMLHttpFactories.length;i++){ 12 try 13 { 14 xmlhttp = XMLHttpFactories[i](); 15 } 16 catch () 17 { 18 //异常则继续下一个函数调用 19 continue; 20 } 21 //成功则中止循环 22 break; 23 } 24 return xmlhttp; 25 }