質問

更新:問題は、古いバージョンのjQuery(1.3.2)を使用している場合にのみ発生し、最新バージョン(1.4.2)ではなく。

元の質問:

私は奇妙な振る舞いを見つけました、そして、作業アラウンドがあるかどうか疑問に思っています。 「ループのJavaScript」を使用して、オブジェクトのプロパティ名を列挙できます。しかし、IEでは、特にXMLHTTPRequestでは機能しないことがわかりました。次のコードを検討してください。 FirefoxのXMLHTTPREQUESTのすべてのプロパティのアラートボックスを開きます。ただし、IEでは、プロパティは見つかりません。デバッガーを介して介入した場合、オブジェクトには間違いなくプロパティがあります。 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>
役に立ちましたか?

解決

jQuery 1.3.2では、Ajaxメソッドが次のコードを使用してxmlhttprequestを作成します。

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

これは、IE7とIE8では、ネイティブXMLHTTPREQUESTオブジェクトがインスタンス化される代わりに、ActiveX等価Microsoft.xmlhttpが代わりにインスタンス化されることを意味します。簡単な答えは、ActiveXコントロールのプロパティと方法が列挙できないため、 for...in 何も発見しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top