2015-01-26 178 views
0

我創建了一個在電視上加載的儀表板網頁。這個頁面想每秒刷新一次。Javascript不斷刷新頁面

我嘗試的第一個方法是好的,簡單方面的標準:

<meta http-equiv="refresh" content="1"> 

這將創建在Mac /鉻和iOS/Safari瀏覽器一個討厭的閃爍效果這是不可接受的。

下一個版本的偉大工程......內容加載並沒有明顯的中斷提出:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
<script src="//netdna.bootstrapcdn.com/bootstrap/3.1.1/js/bootstrap.min.js"></script> 
<script> 
setTimeout(function() { 
    $.ajax({ 
    url: "", 
    context: document.body, 
    success: function(s,x){ 
     $(this).html(s); 
    } 
    }); 
}, 2000); 
</script> 

而這個偉大的工程......內容加載並沒有明顯的間斷呈現。然而,這會在幾分鐘後崩潰任何瀏覽器(IE,Chrome,Safari,Mobile Safari)。

有沒有辦法解決這個問題,不需要我維護兩個單獨的頁面,重裝部分和裏面的數據部分?

+0

你能確定瀏覽器崩潰的原因是什麼?一個可能的罪魁禍首是頁面使用的內存不斷增加。你可以使用開發者控制檯檢查。 – 2015-01-26 22:33:28

+0

你真的需要加載全身嗎?你是否也在同一時間(和其他腳本)重新加載相同的輪詢腳本? – charlietfl 2015-01-26 22:39:18

回答

2

使用timeout來創建一個「輪詢」效果..現在,您只需每隔2秒發出一個請求,無論等待響應。理想情況下,你可以使用網絡套接字這一點,但現在:

function makeAjax() { 
    $.ajax({ 
     url: "", 
     context: document.body, 
     success: function(s,x){ 
      $(this).html(s); 
      setTimeout(makeAjax, 2000); 
     } 
    }); 
} 
makeAjax(); 
+1

使用這種方法,您將在每2秒後創建一個間隔 – Fuzzyma 2015-01-26 22:31:11

+0

@Fuzzyma - Ahh,意味着「超時」 - 漫長的一天。編輯。 – tymeJV 2015-01-26 22:33:16

+0

實現這一點時,我看到請求越來越快,然後基本上就像在F5鍵上放了一塊石頭。 – 2015-01-26 22:52:26