2010-03-31 29 views
3

我正在做與JSONP長時間輪詢和Firefox不斷彈出「加載」微調,使頁面看起來像它還沒有完成加載。有沒有辦法抑制這一點?JSONP長輪詢總是加載

我被告知Orbited團隊有黑客壓制這個,但通過Orbited.js代碼查找我無法弄清楚他們是什麼。任何幫助將不勝感激。

回答

5

這是一個簡單的修補程序。所有你所要做的就是開始用的setTimeout您的輪詢請求..

下面是一些代碼,我使用。它使用jQuery的,但我相信你能弄清楚什麼你需要並使用你的圖書館來做同樣的事情。

<script type="text/javascript"> 
    function poll(){ 
    $.getJSON('/updates', function(json){ 
     //reconnect since we successfully received data and disconnected 
     poll(); 

     //add something here to do whatever with the recieved data 
    }); 
    } 
    /*call the poll function after document has loaded with setTimeout 
    if called before the document finishes loading completely it will 
    cause a constant loading indication*/ 
    setTimeout(poll, 1); 
</script> 
+0

這是最好的解決方案,我用$甚至嘗試(文件)。就緒或doc.addEventListener(「DOMContentLoaded」,...),但除非你等待至少1毫秒,它不會工作。乾杯 – 2012-05-12 12:30:50

2

我沒有答案,但我有一個建議的選擇。其他人只是問了一個類似的問題和here's my answer

基本上,如果您擁有服務器的控制權,最簡單的解決方案是使用跨源資源共享標頭來確定跨域XMLHttpRequest並在舊瀏覽器上回退到JSONP。

我提供了CORS一個相當完整的兼容性表(每userscript的瀏覽器)爲我聯繫到答案的一部分,以及更普遍的一個on Wikipedia