资讯专栏INFORMATION COLUMN

JS高程笔记 - ajax

I_Am / 2126人阅读

摘要:假如你只想支持及更高版本那么大可丢掉前面定义的那个函数而只用原生的实现。跳过这个函数中新增的代码首先检测原生对象是否存在如果存在则返回它的新实例。如果原生对象不存在则检测对象。如果这两种对象都不存在就抛出一个错误。

XMLHttpRequest 对象

IE7+、Firefox、Opera、Chrome 和 Safari 都支持原生的 XHR 对象,在这些浏览器中创建 XHR 对象要像下面这样使用 XMLHttpRequest 构造函数。

var xhr = new XMLHttpRequest();

假如你只想支持 IE7 及更高版本,那么大可丢掉前面定义的那个函数,而只用原生的 XHR 实现。但是,如果你必须还要支持 IE 的早期版本,那么则可以在这个 createXHR()函数中加入对原生 XHR对象的支持。

function createXHR() {
    if (typeof XMLHttpRequest != "undefined") {
        return new XMLHttpRequest();
    } else if (typeof ActiveXObject != "undefined") {
        if (typeof arguments.callee.activeXString != "string") {
            var versions = ["MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0", "MSXML2.XMLHttp"],
                    i, len;
            for (i = 0, len = versions.length; i < len; i++) {
                try {
                    new ActiveXObject(versions[i]);
                    arguments.callee.activeXString = versions[i];
                    break;
                } catch (ex) {
                    //跳过
                }
            }
        }
        return new ActiveXObject(arguments.callee.activeXString);
    } else {
        throw new Error("No XHR object available.");
    }
}
var xhr = createXHR();

这个函数中新增的代码首先检测原生 XHR 对象是否存在,如果存在则返回它的新实例。如果原生对象不存在,则检测ActiveX 对象。如果这两种对象都不存在,就抛出一个错误。然后,就可以使用下面的代码在所有浏览器中创建 XHR 对象了。

var xhr = createXHR();

由于其他浏览器中对 XHR 的实现与 IE 最早的实现是兼容的,因此就可以在所有浏览器中都以相同方式使用上面创建的 xhr 对象。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/84710.html

相关文章

  • javascript高程3 学习笔记(二)

    摘要:的理解函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型比如函数的形参有两个,但是调用函数传入的参数可以写一个,三个或不写参数对应等,解析器都可以正常解析,这是因为中参数在内部是以一个数组形式来表示,故而不需要关系传入参数 ECMAScript function的理解 ECMAScript 函数与其他语言函数最大的不同在于,其不介意传入多少参数以及参数的类型...

    JerryWangSAP 评论0 收藏0
  • 读“js高程笔记

    showImg(http://img3.douban.com/lpic/s8958650.jpg); 0x00 javascript组成 ECMAScript(-265)核心语言部分 DOM文档对象模型(DOM1、2、3) BOM浏览器对象模型(提供与浏览器交互的接口和方法) 0x01 async 异步加载 执行顺序不定 charset defer 延迟加载,立即下载脚本但不执行 src ...

    CollinPeng 评论0 收藏0
  • 笔记-js高程-第七章 函数表达式

    摘要:函数声明提升定义函数有两种方式函数声明函数表达式报错,该函数不存在上述代码出现不同的执行结果,是因为函数声明的一个重要特征函数声明提升,意思是函数声明会被提升到顶部,即首先读取函数声明。 函数声明提升 定义函数有两种方式: 函数声明 sayName(123);//123 function sayName(name){ alert(name); } 函数表达式 sayName(1...

    source 评论0 收藏0
  • JS高程笔记 - 继承

    摘要:下面来看一个例子继承属性继承方法在这个例子中构造函数定义了两个属性和。组合继承最大的问题就是无论什么情况下都会调用两次超类型构造函数一次是在创建子类型原型的时候另一次是在子类型构造函数内部。 组合继承 组合继承(combination inheritance),有时候也叫做伪经典继承,指的是将原型链和借用构造函数的技术组合到一块,从而发挥二者之长的一种继承模式。其背后的思路是使用原型链...

    fsmStudy 评论0 收藏0
  • javascript高程3 学习笔记(一)

    摘要:元素,当浏览器不支持脚本数据结构有如下中基本数据结构操作符,用来检测给定变量的数据类型结果都是,声明没初始化,使用生命变量但未对其进行初始化的,默认没有进行声明,传递给函数会导致一个错误,对于未声明变量这么操作没什么意义比如,也是返回。 javascript简史 微软IE和网景在浏览器上的竞争 ECMAScript,由ECMA-262定义,提供核心语言功能 `ECMA 欧洲计算机制...

    you_De 评论0 收藏0

发表评论

0条评论

I_Am

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<