2010-11-11 55 views
1

我已經編寫了一個應用程序與龍捲風,以支持通過HTTP流在我的網站上的實時更新。它適用於除IE7和IE8以外的所有瀏覽器。這裏是處理HTTP流代碼:IE7/8 responseText in readyState 3不可用

... 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.在谷歌的幾個小時裏,我學到了IXMLHTTPRequest.responseStream。我試圖使用

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

但結果相同。請求被髮送到服務器,readyState爲3,但xhr.responseStream不可用。

任何想法?或者當我檢測到IE時,我應該回到長輪詢?

謝謝

亨利

+0

你有沒有考慮過使用JS框架來跨瀏覽器提供一致的功能? – 2010-11-11 19:32:34

+0

我試過jQuery和YUI,但他們似乎不支持這一點。你知道一個支持HTTP流媒體嗎? – spreiter301 2010-11-11 20:06:12

+0

我記得在使用'onreadystatechange'事件的時候,你不能保證每一個'readyState'都會被打到。 – drudge 2010-11-11 23:01:53

回答

0

如果再次閱讀您的鏈接頁面;

相比之下,IXMLHTTPRequest接口的微軟XML(MSXML)版本公開通過responseStream財產,其中的Windows Internet Explorer版本的原生未實現部分結果。請注意,此行爲也與IServerXMLHTTPRequest接口不同,後者向responseBody和responseText提供部分結果。

也就是說,我想,一個不必要的複雜的說法,這個東西存在,但我們不這樣做。無用的IE。我只需要實現同樣的事情,最終只是回到長時間輪詢IE。

The Dojo foundation具有使用貝葉的cometd。但我相信只有Jetty目前實現了Bayeux協議。

所以最後,IE,DIAF。