gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 18:55:22 26 4
gpt4 key购买 nike

更新:只有当我使用旧版本的 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com