JavaScript для .. in in and jquery $ .for () не работает для xmlhttprequest в т.е.

StackOverflow https://stackoverflow.com/questions/2291381

Вопрос

Обновление: проблема возникает только тогда, когда я использую более старую версию jQuery (1.3.2), а не в новой версии (1.4.2).

Оригинальный вопрос:

Я нашел странное поведение, и мне интересно, есть ли какие-либо рабочие пути. JavaScript 'for' Loop может использоваться для перечисления имен свойств объекта. Я обнаружил, что на то есть, т.е. не работает для некоторых объектов, особенно Xmlhttprequest. Рассмотрим следующий код. Он откроет ящик для оповещения для каждого свойства на Xmlhttprequest на Firefox. По т. Е. Однако никаких свойств не найдено. Если я пройду с отладчиком, на объекте определенно есть свойства. Если я использую функцию 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