写一个类似微薄的滚动加载

    滚动加载是指:当用户滚动滚动条查看页面内容的同时,页面异步加载未加载的内容,构造一种良好的用户体验。滚动加载的思想是,使用setInterval不停的执行函数A,在函数A中作出判断,如下:当滚动条接近页面底部时,使用ajax异步加载页面。

     解决此问题的关键是如果滚动条到达了页面底部:

         var n1 =  parseInt( document.documentElement.scrollTop) );
         var n2 = parseInt(document.documentElement.clientHeight);
         var n3 = parseInt(document.documentElement.scrollHeight);

    当n1+n2==n3的时候,滚动条的位置则处于页面最低端。

     代码如下:

          (function($) {
    var run_interval,run_num = 0;
    $.scrollLoad = function() {
           
        run_interval = setInterval(function(){
            cando();
        }, 1000);//每隔2秒钟调用一次cando函数来判断当前滚动条位置。
       
        $(window).scroll(function()
        {
            run_num = 0;
        });
    };
   
    function showContent() {
        for(var i = 0 ; i < 10 ; i ++)
        {
            $('#mypage').append('你好,我已经被加载出来了<br />');
        }
        $('#mypage').append('<br />');
    }
   
    function cando(){
        var n1 =  parseInt( getScrollTop() );
        var n2 = parseInt(document.documentElement.clientHeight);
        var n3 = parseInt(document.documentElement.scrollHeight);
        if( (n1+n2) == n3 )
        {
             if(run_num == 0)
             {
                 setTimeout( function(){
                    showContent()
                 },500);
                 run_num = 1;
             }
        }   
    }
    function getScrollTop()
    {
        var t =  0;
        if (document.documentElement && document.documentElement.scrollTop) {
            t = document.documentElement.scrollTop;
        } else if (document.body) {
            t = document.body.scrollTop;
        }
        return t;
    }
}(jQuery));

这里提出几点优化意见:

     第一,用ajax异步加载页面内容的时候,如果已经没有数据,用clearInterval清除函数调用。

     第二,异步加载是,一定要用setTimeOut设置延时,不然页面会很卡。

     第三,最好不要无止尽加载。所谓无止境加载就是页面一直加载下去。个人建议,加载几页数据的后,应该由用户决定是否继续加载跟多内容。如,使用“点击查看更多内容进行提示”,如用户点击才继续加载。

     第四,代码中run_num用于防止多次加载,至于为何会酿成多次加载,原因未知。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值