在使用javascript发送ajax请求的时候,我们通常需要创建XMLHttpRequest对象,但是通常不同的浏览器兼容性不同。我们可以使用window.ActiveXObject来判断浏览器是否支持ActiveX控件,如果支持ActiveX控件,我们可以利用var xml=new ActiveXObject("Microsoft.XMLHTTP")的形式来创建XMLHTTPRequest对象,但是Microsoft.XMLHTTP也有局限性,需要需MSXML4.0支持。而在非 IE浏览其中可用var xml=new XMLHttpRequest()创建XMLHttpRequest对象。
在公司里看到了别人写的一种我觉得很好的方法,有效的解决了浏览器的兼容性问题。
function createXmlRequest(){
if(window.ActiveXObject && !window.XMLHttpRequest){
//IE浏览器
var msxmls = ['Msxml2.XMLHTTP.5.0','Msxml2.XMLHTTP.4.0','Msxml2.XMLHTTP.3.0','Msxml2.XMLHTTP','Microsoft.XMLHTTP'];
for (var i = 0; i < msxmls.length; i++) {
try {
return new ActiveXObject(msxmls[i]);
} catch (e) {
}
}
}else if(window.XMLHttpRequest){
//Mozilla、Opera 等非IE浏览器
return new XMLHttpRequest();
}else
{
return null;
}
}