如何创建XMLHttpRequest对象及兼容处理(惰性)

所有现代浏览器均支持 XMLHttpRequest 对象。语法:var xhr = new XMLH

所有现代浏览器(IE7+、Firefox、Chrome、Safari 以及 Opera)均支持 XMLHttpRequest 对象。

语法:var xhr = new XMLHttpRequest();

IE浏览器中XMLHttpRequest对象是作为ActiveX控件实现的。

IE5和IE6语法:

xhr = new ActiveXObject(“Microsoft.XMLHTTP”);

或 xhr = new ActionXObject(“Msxm12.XMLHTTP”);

即:

function createXHR(){

var xhr = null;

if(window.XMLHttpRequest){

xhr = new XMLHttpRequest();

}else{

if(window.ActiveXObject){

try{

xhr = new ActionXObject(“Msxm12.XMLHTTP”);

}catch(e){

try{

xhr = new ActiveXObject(“Microsoft.XMLHTTP”);

}catch(e){

xhr = null;

}

}

}

}

return xhr;

}

以上方法提供的XMLHttpRequest对象创建方法,解决了不同浏览器的差异,而且也处理了不同版本IE浏览器之间的差别,所以可以作为创建XMLHttpRequest对象的通用方法。

但是有一个弊端,就是用户如果多次创建XMLHttpRequest对象,每次调用createXHR方法都会进行复杂的判断,所以我们需要使用惰性函数,即当方法执行之后,已经判断出浏览器的执行环境,然后让createXHR重新赋值,赋值后的函数是直接return 对应的方法。

function createXHR(){

var xhr = null,flag = false,

ary = [

function(){

return new XMLHttpRequest;

},

function(){

return new ActiveObject(“Microsoft.XMLHTTP”);

},

function(){

return new ActiveObject(“Msxml2.XMLHTTP”);

}

];

for(var i=0,len=ary.length;i<len;i++){

var curFn = ary[i];

try{

xhr = curFn();

//本次循环未出错,浏览器兼容这个版本,把createXHR重写为当前方法,完成后不需要判断下面的,直接退出循环即可

createXHR = curFn;

flag = true;

break;

}catch(e){

//本次循环获取的方法执行出现错误,继续执行下一次循环

}

}

if(!flag){

throw new Error(“error”);

}

return xhr;

}

如何创建XMLHttpRequest对象及兼容处理(惰性)

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/87141.html

(0)

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

关注微信