Javascript创建XMLHttpRequest对象的3种方式

以下仅作为个人笔记用,如有不妥,谢谢指出。

引言:XMLHttpRequest对象是AJax技术的核心,个人觉得掌握XMLHttpRequest对象的创建对于学习AJax是必要的。下面介绍我所知道的关于XMLHttpRequest对象创建时的注意点和它的3种创建方式:

借用W3CSchool上的原话:“所有现代浏览器 (IE7+、Firefox、Chrome、Safari 以及 Opera) 都内建了 XMLHttpRequest 对象”,所以这些对于这些浏览器可以直接通过new XMLHttpRequest()的方式获取到XMLHttpRequest对象。对于IE5、6等老版本浏览器,使用 ActiveX 对象来创建:new ActiveXObject("Microsoft.XMLHTTP");

第一种:通过嵌套多个try-catch确定浏览器的不同,并以此创建对应的XMLHttpRequest对象。代码如下:

function getXMLHttpRequest() {
	var xmlHttpRequest;
	try {//IE7+、Chrome、Firefox、Opera8.0+和Safari
		xmlHttpRequest = new XMLHttpRequest();
	} catch (e) {
		try {//IE7+
			xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {//IE5、6
				xmlHttpRequest new ActiveXObject("Microsoft.XMLHTTP");
			} catch (e) {}
		}
	}
	return xmlHttpRequest;
}

这种创建方式适用于所有浏览器。

第二种,先判断window.ActiveXObject或window.XMLHttpRequest是否存在,然后再创建对应的XMLHttpRequest对象。代码如下:

function getXMLHttpRequest() {
	var xmlHttpRequest;
	if(window.ActiveXObject) {//IE8
		xmlHttpRequest = new ActiveXObject("MSXML2.XMLHTTP.3.0");
	} else if(window.XMLHttpRequest) {//其他浏览器如Firefox、Chrome等
		xmlHttpRequest = new XMlHttpRequest();
	}
	return xmlHttpRequest;
}

这种方式貌似不适用于IE5、6

第三种,先判断window.XMLHttpRequest或window.ActiveXObjec是否存在,若window.XMLHttpRequest存在,通过new XMLHttpRequest()方式创建;否则,若window.ActiveXObjec存在,则表明当前浏览器为IE,再通过try-catch确定IE版本,通过new ActiveXObject("IE版本号")方式创建。代码如下:
function getXMLHttpRequest() {
	var xmlHttpRequest = null;
	if(window.XMLHttpRequest) {
		xmlHttpRequest = new XMLHttpRequest();
	} else {
		if(window.ActiveXObject) {
			try {//IE5、6
				xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				try {
					xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTP");
				} catch(e) {}
			}
		}
	}
	return xmlHttpRequest;
}

你可能感兴趣的:(Javascript,AJax和JQuery,javascript,xmlhttprequest,activex,ie)