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 对象了。code
var xhr = createXHR();
因为其余浏览器中对 XHR 的实现与 IE 最先的实现是兼容的,所以就能够在全部浏览器中都以相同方式使用上面建立的 xhr 对象。对象