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; 
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值