//XML HTTP请求对象的创建方法
 if(typeof XMLHttpRequest == "undefined" && window.ActiveXObject){
   function XMLHttpRequest(){
     var arrSignatures = ["MSXML2.0.XMLHTTP.5.0","MSXML2.0.XMLHTTP.4.0","MSXML2.0.XMLHTTP.3.0",
                      "MSXML2.0.XMLHTTP.2.0","MSXML2.0.XMLHTTP","Microsoft.XMLHTTP"];
     for(var i=0;i < arrSignatures.length;i++){
    try{
  var oRequest = new ActiveXObject(arrSignatures[i]);
  return oRequest;
}catch(oError){
  //ignore
}
 }
 throw new Error("MSXML is not installed on your system.");
   }
 } var oRequest = new XMLHttpRequest();
 oRequest.open("get","example.txt",false);
 oRequest.send(null);
 alert("status is"+oRequest.status+"("+oRequest.statusText+")");
 alert("Response text is"+oRequest.responseText);    
上面这段代码,在IE中是如何执行的呢?当new XMLHttpRequest()时找不到XMLHttpRequest对象时就会去执行上面的if语句块吗?javascript不是从上到下解释执行的吗?怎么会执行下面的再执行上面的呢,不明白,请教教我

解决方案 »

  1.   

    你别一叶障目不见泰山啊;一个if遮住了你的双眼,呵呵。关键是function XMLHttpRequest()<html>
    <body>
    <script>
    if(typeof XMLHttpRequest == "undefined" && window.ActiveXObject){
       function XMLHttpRequest(){
       alert(2)
         var arrSignatures = ["MSXML2.0.XMLHTTP.5.0","MSXML2.0.XMLHTTP.4.0","MSXML2.0.XMLHTTP.3.0",
                              "MSXML2.0.XMLHTTP.2.0","MSXML2.0.XMLHTTP","Microsoft.XMLHTTP"];
         for(var i=0;i < arrSignatures.length;i++){
            try{
              var oRequest = new ActiveXObject(arrSignatures[i]);
              alert(3)
              return oRequest;
            }catch(oError){
              //ignore
            }
         }
         throw new Error("MSXML is not installed on your system.");
       }
     }
    alert(1)
     var oRequest = new XMLHttpRequest();
     alert('开始~~')
     oRequest.open("get","example.txt",false);
     oRequest.send(null);
     alert("status is"+oRequest.status+"("+oRequest.statusText+")");
     alert("Response text is"+oRequest.responseText);   
    </Script>
    </body>
    </html>