Javascript 用于..in和jQuery';美元兑换()唐';t在IE中为XMLHttpRequest工作
更新:仅当我使用较旧版本的jQuery(1.3.2)而不是最新版本(1.4.2)时,问题才会出现 原始问题: 我发现了一个奇怪的行为,我想知道是否有任何解决办法。javascript“for”循环可用于枚举对象的属性名称。我发现,在IE上,它对某些对象不起作用,尤其是XMLHttpRequest。考虑下面的代码。它将为Firefox上XMLHttpRequest上的每个属性打开一个警报框。但是,在IE上未找到任何属性。如果我使用调试器,对象上肯定有属性。 如果我使用jQuery的$.for()函数,我会看到相同的结果Javascript 用于..in和jQuery';美元兑换()唐';t在IE中为XMLHttpRequest工作,javascript,internet-explorer,for-in-loop,Javascript,Internet Explorer,For In Loop,更新:仅当我使用较旧版本的jQuery(1.3.2)而不是最新版本(1.4.2)时,问题才会出现 原始问题: 我发现了一个奇怪的行为,我想知道是否有任何解决办法。javascript“for”循环可用于枚举对象的属性名称。我发现,在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>
$(文档).ready(函数(){
$.ajax({
url:“/willneverwork/”,
超时:1,
错误:函数(xmlHttpRequest){
for(输入xmlHttpRequest){
警报(键);
}
}
});
});
在jQuery 1.3.2中,ajax方法使用以下代码创建XMLHttpRequest:
return window.ActiveXObject
? new ActiveXObject("Microsoft.XMLHTTP")
: new XMLHttpRequest();
这意味着在IE7和IE8中,不是实例化本机XMLHttpRequest对象,而是实例化ActiveX等价物Microsoft.XMLHTTP。简而言之,ActiveX控件的属性和方法是不可枚举的,因此,中的“
for…”将不会发现任何内容 在IE8中适用于我:for(新XMLHttpRequest()中的k)警报(k)代码>也在兼容模式下工作。你考了哪一门?谢谢,安迪。根据你的建议,我无意中发现了问题。