作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
更新:只有当我使用旧版本的 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>
最佳答案
在 jQuery 1.3.2 中,ajax 方法使用以下代码创建 XMLHttpRequest:
return window.ActiveXObject
? new ActiveXObject("Microsoft.XMLHTTP")
: new XMLHttpRequest();
这意味着在 IE7 和 IE8 中,不是实例化 native XMLHttpRequest 对象,而是实例化 ActiveX 等价物 Microsoft.XMLHTTP。简短的回答是 ActiveX 控件的属性和方法不可枚举,因此 for...in
不会发现任何东西。
关于Javascript for..in 和 jQuery 的 $.for() 不适用于 IE 中的 XMLHttpRequest,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2291381/
我是一名优秀的程序员,十分优秀!