AJAX中 获得 XMLHttpRequest对象 的三种方式

这是挺久之前的笔记,忘记是从哪位大牛笔记里面copy的了!

引言:

        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; 

你可能感兴趣的:(学习笔记,AJAX,XMLHttpRequest)