【问题标题】:Ajax reload DIV, execute immediatelyAjax重载DIV,立即执行
【发布时间】:2014-03-18 10:06:07
【问题描述】:

我有以下脚本,它每 3 秒重新加载一次论坛主题,但我也希望它在页面加载后立即加载,这样第一次就没有延迟。页面第一次加载需要 3 秒才能显示主题。

谁能帮我解决这个问题?

提前致谢。

<script type="text/javascript">

window.onload = function(){


function foo()
{
$('#forum').load('forum.php').fadeIn("slow");
} // refresh every 10000 milliseconds
setInterval(foo, 3000);
}
</script>

【问题讨论】:

    标签: ajax html reload


    【解决方案1】:

    那是因为您正在等待 .onload 事件,该事件会在浏览器下载所有资源/资产(如图像)时触发——这种延迟在臃肿或资源密集的网站上会很明显,这将发出大量 HTTP 请求,并且不会像您希望的那样尽早触发 onload 事件。

    解决方案?您应该改为在 DOM 就绪时触发 foo

    $(function() {
        var foo = function() {
            $('#forum').load('forum.php').fadeIn("slow");
        }
    
        // Will execute on DOM ready
        foo();
        setInterval(foo, 3000);
    });
    

    注意$(function() {...}) 相当于 jQuery 中的$(document).ready(function() {...})

    如果你还想在所有资源加载完毕后强制触发foo(),只需再次触发:

    $(function() {
        var foo = function() {
            $('#forum').load('forum.php').fadeIn("slow");
        }
    
        // Will execute on DOM ready
        foo();
        setInterval(foo, 3000);
    
        // Also execute on window load
        $(window).load(foo);
    });
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-14
      • 2019-05-04
      • 2012-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多