IE7 / 8 responseText в readyState 3 недоступен - PullRequest
1 голос
/ 11 ноября 2010

Я написал приложение с торнадо для поддержки обновлений в реальном времени на моем веб-сайте через потоковую передачу HTTP. Он работает во всех браузерах, кроме IE7 и IE8. Вот код, который обрабатывает потоковую передачу HTTP:

... code to create xhr object
xhr.open('GET', 'http://192.168.0.173:8888', true);
xhr.onreadystatechange = function() {
        if(xhr.readyState == 3 && xhr.status==200) {
        try {
            alert(xhr.responseText);
        } catch(e) {
            alert("noo");
        }
    }
}
setTimeout("xhr.send(null);", 1000);

Проблема в том, что xhr.responseText недоступен, когда readyState равен 3. После нескольких часов работы Google я узнал о IXMLHTTPRequest.responseStream . Я пытался использовать

xhr = new ActiveXObject("MSXML2.XMLHTTP.3.0");

но с тем же результатом. Запрос отправляется на сервер, и readyState равен 3, но xhr.responseStream недоступен.

Есть идеи? Или я должен вернуться к долгому опросу, когда я обнаружу IE?

Спасибо

Henry

1 Ответ

0 голосов
/ 18 января 2011

Если вы прочитаете свою связанную страницу снова;

Для сравнения, версия XML XML (MSXML) интерфейса IXMLHTTPRequest предоставляет частичные результаты через свойство responseStream , которое в собственной версии Windows Internet Explorer не реализовано . Учтите, что это поведение также отличается от интерфейса IServerXMLHTTPRequest, который предоставляет частичные результаты для responseBody и responseText.

Это, я думаю, один излишне сложный способ сказать, что это существует, но мы этого не делаем. Бесполезный IE. Мне просто нужно было реализовать то же самое и в итоге просто вернуться к долгому опросу IE.

Фонд Додзё использует Cometd, используя Байё. Но я считаю, что только Jetty в настоящее время реализует протокол Байе.

Итак, в заключение, IE, DIAF.

...