ReadyState 3中的IE7 / 8 responseText不可用

时间:2010-11-11 19:27:17

标签: javascript http streaming comet

我用龙卷风编写了一个应用程序,通过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);

问题是当readyState为3时,xhr.responseText不可用。经过几个小时的google,我了解了IXMLHTTPRequest.responseStream。我试着用

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

但结果相同。请求被发送到服务器,readyState为3,但xhr.responseStream不可用。

有什么想法吗?或者,当我检测到IE时,我应该回到长轮询吗?

谢谢

亨利

1 个答案:

答案 0 :(得分:0)

如果您再次阅读linked page;

  

相比之下,IXMLHTTPRequest接口的Microsoft XML(MSXML)版本通过responseStream属性公开部分结果,是Windows Internet Explorer本机版本未实现的。请注意,此行为也与IServerXMLHTTPRequest接口不同,后者为responseBody和responseText提供部分结果。

也就是说,我想,一种不必要的复杂说法,这件事存在,但我们不这样做。无用的IE。我只是必须实现同样的事情,最终只是回到IE的长轮询。

The Dojo foundation使用了Bayeux。但我相信只有Jetty目前实施了Bayeux协议。

总之,IE,DIAF。