javascript for..in and jquery's $ .for()はxmlhttprequestで動作しませんie
-
21-09-2019 - |
質問
更新:問題は、古いバージョンの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
何も発見しません。
所属していません StackOverflow