ygysxy 2009-08-05 03:15
浏览 170
已采纳

xmlhttp创建顺序

大家好,在开发中经常碰到一个问题,就是xmlhttp创建顺序问题,代码如下
if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
} else if(window.ActiveXObject){
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for (var i = 0; i < prefixes.length; i++) {
try {
// try to create the objects
xmlHttp=new ActiveXObject(prefixes[i] + ".XmlHttp");
break;
}catch (ex) {
};
}
if(i==prefixes.length)throw new Error("Your browser does not support XmlHttp objects");
}
开发中测试的时候用一些浏览器就会出现问题,而把顺序换一下
if(window.ActiveXObject){
var prefixes = ["MSXML2", "Microsoft", "MSXML", "MSXML3"];
for (var i = 0; i < prefixes.length; i++) {
try {
// try to create the objects
xmlHttp=new ActiveXObject(prefixes[i] + ".XmlHttp");
break;
}catch (ex) {
};
}
if(i==prefixes.length)throw new Error("Your browser does not support XmlHttp objects");
}else if(window.XMLHttpRequest){
xmlHttp=new XMLHttpRequest();
}
就可以解决。
想问一下为什么,在第一种情况下比如一个浏览器不支持XMLHttpRequest的话就不满足if条件,那应该转入else if去看是否匹配ActiveXObject,那应该什么浏览器都能创建成功啊,为什么还会出现浏览器不支持的问题,非要把创建顺序更换一下成第二种情况才能解决呢?
不知道描述的明不明白,希望高手解决,谢谢
[b]问题补充:[/b]
哈哈,应用起来当然是用框架,但是原理什么的还是要知道,要不光会用也没啥意思

展开全部

  • 写回答

2条回答 默认 最新

  • 我不是逗B 2009-08-10 12:23
    关注

    我很多时候都是用的try cath,而不是if .else
    [code="java"]
    try{
    ajax = new ActiveXObject("Microsoft.XMLHTTP");
    as = 1;
    }catch(e){
    try{
    ajax = new ActiveXObject("Msxml2.XMLHTTP");
    as = 1;
    }catch(e){
    try{
    ajax = new XMLHttpRequest();
    as = 2;
    }catch(e){
    ajax = null;
    as = 0;
    }
    }
    }
    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部