代码之家  ›  专栏  ›  技术社区  ›  Frank Schwieterman

Javascript for..in和jQuery的$.for()不适用于IE中的XMLHttpRequest

  •  1
  • Frank Schwieterman  · 技术社区  · 16 年前

    更新:仅当我使用较旧版本的jQuery(1.3.2)而不是最新版本(1.4.2)时,问题才会出现。

    如果我使用jQuery的$.for()函数,我会看到相同的结果。

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" 
          "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    
        <script src="http://code.jquery.com/jquery-latest.js"></script>
    
        <script>
            $(document).ready(function() {
    
                $.ajax({
                    url: "/willneverwork/",
                    timeout: 1,
                    error: function(xmlHttpRequest) {
    
                        for (key in xmlHttpRequest) {
                            alert(key);
                        }
                    }
                });
            });
        </script>
    
    </head>
    <body>
    </body>
    </html>
    
    1 回复  |  直到 16 年前
        1
  •  2
  •   Andy E    16 年前

    在jQuery 1.3.2中,ajax方法使用以下代码创建XMLHttpRequest:

    return window.ActiveXObject 
               ? new ActiveXObject("Microsoft.XMLHTTP") 
               : new XMLHttpRequest();
    

    这意味着在IE7和IE8中,不是实例化本机XMLHttpRequest对象,而是实例化ActiveX等价物Microsoft.XMLHTTP。简而言之,ActiveX控件的属性和方法是不可枚举的,因此 for...in 不会发现任何东西。