2015-10-22 34 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