创建Ajax对象有如下方式
var xhr=new ActiveXObject('Microsoft.XMLHTTP');
var xhr=new XMLHttpRequest();
第一种方式只是支持IE浏览器,如果用这种方式创建的话,在其它浏览器中就不起作用了。
第二种方式在IE高版本也支持这种方式的创建方式,其它浏览器也支持这种创建方式。
那么对于这种兼容性问题,怎么解决呢?
如下代码是封装成一个函数放在js文件中的,第一种方式:
function createxhr() {
var xhr;
//获取浏览器信息
var str=window.navigator.userAgent;
//判断是否是IE浏览器
if(str.indexOf('MSIE')>0){
//创建一个对象
xhr=new ActiveXObject('Microsoft.XMLHTTP');
}else{
//创建一个对象
xhr=new XMLHttpRequest();
}
return xhr;
}
第二种方式:
function createxhr() {
try {return new XMLHttpRequest();} catch (e) {}
try {return new ActiveXObject('Microsoft.XMLHTTP');} catch (e) {}
alert('请更换浏览器!');
}
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>解决Ajax兼容性问题</title>
<script type="text/javascript" src="public.js"></script>
</head>
<body>
<script>
var xhr=createxhr();
alert(xhr);
</script>
</body>
</html>
这样就在浏览器访问都能访问到这个对象了。