2015-10-22 72 views
1

我已經構建了一個Web應用程序,其中包含一個顯示html頁面內容的預覽窗口。由於html頁面不斷更新,我需要預覽窗口每0.5秒反映一次這些更改。使用XMLHttpRequest在網頁中查看網頁

除預覽窗口在刷新時閃爍時,一切正常。這種情況有時只會發生,似乎很有氣質。大部分時間不閃爍,並且對html頁面的更新非常流暢。

這是代碼 - 任何人都可以提出任何建議,以防止發生閃爍?

//Get the preview data and insert/refresh it in the #preview-fram div 
    function refreshinfo(){ 
     var xmlhttp; 
     var id = $.urlParam('id'); 
     var grid = $.urlParam('grid');      


     if (window.XMLHttpRequest){ 
      xmlhttp=new XMLHttpRequest(); 
     } 
     else{ 
      xmlhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
     } 
     xmlhttp.onreadystatechange=function(){ 
     if (xmlhttp.readyState==4 && xmlhttp.status==200){ 
      document.getElementById("preview-frame").innerHTML=xmlhttp.responseText; 
      } 
     } 

     xmlhttp.open("GET","http://webhost:8888/subs-banner-generator/preview?id="+id+'&grid='+grid,true); 
     xmlhttp.send(); 

     } 

     setInterval(refreshinfo, 500); //refresh the data every 0.5 secs 

回答

1
  1. 500ms的不是很多給
  2. 不建議使用的setInterval阿賈克斯
  3. 您標誌着這一jQuery的,爲什麼不使用它的服務器?

像這樣

function refreshinfo(){ 
    var id = $.urlParam('id'); 
    var grid = $.urlParam('grid'); 
    var url = "http://webhost:8888/subs-banner-generator/preview?id="+id+'&grid='+grid; 
    $("#preview-frame").load(url,function() { 
     setTimeout(refreshinfo,500); // will load the page again 500ms after successful load 
    }); 
} 
$(function() { 
    refreshinfo(); 
}); 
+0

感謝。我剛剛實現了你的代碼,它確實工作。你怎麼能確定它會解決我的閃爍問題呢? – richelliot

+0

它肯定會使它不那麼突出,因爲如果加載和渲染花費的時間超過500毫秒,代碼會中斷渲染 – mplungjan

+0

是有道理的。我會在接下來的幾天內對它進行測試,如果閃爍消失,請將您的答案標記爲正確! – richelliot