ygysxy
2009-08-05 11:15
浏览 168
已采纳

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 20: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条)

相关推荐 更多相似问题