jquery自动刷新不闪烁

Posted

技术标签:

【中文标题】jquery自动刷新不闪烁【英文标题】:jquery auto refresh without blinking 【发布时间】:2012-10-30 17:43:31 【问题描述】:
<script type="text/javascript">
window.onload = setupRefresh;

function setupRefresh() 
  setTimeout("refreshPage();", 1000);

function refreshPage() 
   window.location = location.href;

页面现在每秒重新加载唯一的问题它闪烁如何解决这个问题

【问题讨论】:

需要使用ajax,直接在dom中应用内容 看起来它做了它不应该做的事?为什么要每秒重新加载页面?? 它当然会闪烁.. 页面需要重新加载,这需要一点时间。也不需要做你正在用javascript做的事情,只需使用meta标签 它需要每秒更新一次以检查新内容 不要每秒刷新整个页面,而是刷新一部分,否则用户会发疯。使用异步请求从服务器获取更新。也请参阅我的答案,并寻找 AJAX。 【参考方案1】:

您可以使用 div 和 .get 与 jquery 从您网站上的另一个页面获取数据。

你可以使用 setTimeOut(function, time)

$(function() 
    startRefresh();
);

function startRefresh() 
    setTimeout(startRefresh,1000);
    $.get('pagelink.php', function(data) 
        $('#content_div_id').html(data);    
    );

【讨论】:

【参考方案2】:

如果页面完全重新加载并覆盖自身(包括正在重新加载的脚本,请尝试此版本:

function startRefresh() 
    $.get('', function(data) 
        $(document.body).html(data);    
    );

$(function() 
    setTimeout(startRefresh,1000);
);

【讨论】:

【参考方案3】:

如果没有闪烁效果,您将无法以这种方式重新加载页面。查看 AJAX 以获取页面的更新内容并将其异步显示在“现有”页面中。

看看:http://www.brightcherry.co.uk/scribbles/jquery-auto-refresh-div-every-x-seconds/,刷新部分屏幕(该部分可以是页面唯一的&lt;DIV&gt;)。

【讨论】:

【参考方案4】:

感谢函数的回答,但如果我想使用大约 1 分钟的延迟,我必须通过这种方式开始调用函数:

<script type="text/javascript">
//<![CDATA[
var vTimeOut;

$(function() 
  vTimeOut= setTimeout(startRefresh, 60000)
);


function startRefresh() 
  clearInterval(vTimeOut);
  vTimeOut= setTimeout(startRefresh, 60000);
  $(<#div>).load(<loadURL>);


//]]>
</script>

否则,startRefresh 函数会很快触发或重复更多次。

【讨论】:

以上是关于jquery自动刷新不闪烁的主要内容,如果未能解决你的问题,请参考以下文章

html页面打开以后自动刷新一次。只要一次

html页面打开以后自动刷新一次。只要一次

iframe a跳转后自动刷新又返回原页

jquery怎么实现页面的自动刷新

自动对焦时光标不闪烁

怎样用jquery实现新闻无闪动刷新,用js中工具箱2到3个控件,搜索文本框自动文本框自动填充完成