jquery浏览器滚动加载技术实现方案


Posted in Javascript onJune 03, 2014

要知道,数据量增加很频繁时,要通过定位页码来找到目标数据似乎并没有什么意义。我觉得用户体验成熟的WEB应用程序应当引导用户使用TAG或搜索等功能来找到目标数据。至于浏览数据,尤其是浏览最新的数据,利用浏览器滚动条来加载,是很好的尝试……

我试着用jquery来实现这个功能。先要得到滚动条的总长属性值:scrollHeight,还有滚动条当前位置属性值:scrollTop。然后通过计算,若当前值位于总长值三分之二时加载新数据。假设DOM上有一个元素为<div id=”mypage”></div>,该元素overflow样式为scroll,也就是元素中的内容溢出元素指定高度时启用滚动条。利用jquery的load方法为元素加载一个已经存在的文件,我假设它是table.html。这个文件的内容可以是足以使浏览器滚屏的一张数据表。

<script type=”text/javascript” src=”jquery.js“>//加载jquery库</script>
<script type=”text/javascript”> gh
var hght=0;//初始化滚动条总长
var top=0;//初始化滚动条的当前位置
$(document).ready(function(){//DOM的onload事件
$(”#mypage”).load(”table.html”);//table.html的内容被加载到mypage元素
$(”#mypage”).scroll( function() {//定义滚动条位置改变时触发的事件。
hght=this.scrollHeight;//得到滚动条总长,赋给hght变量
top=this.scrollTop;//得到滚动条当前值,赋给top变量
});
});
setInterval(”cando();”,2000);//每隔2秒钟调用一次cando函数来判断当前滚动条位置。
function cando(){
if(top>parseInt(hght/3)*2)//判断滚动条当前位置是否超过总长的2/3,parseInt为取整函数
show();//如果是,调用show函数加载内容。
}
function show(){
$.get(”table.html”, function(data){//利用jquery的get方法得到table.html内容
$(”#mypage”).append(data);//用append方法追加内容到mypage元素。
hght=0;//恢复滚动条总长,因为$(”#mypage”).scroll事件一触发,又会得到新值,不恢复的话可能会造成判断错误而再次加载……
top=0;//原因同上。
});
}
</script>
<div id=”mypage”></div>

为什么要隔2秒钟调用一次判断呢?因为只要$(”#mypage”).scroll事件一被触发,就会影hght和top值,这个值可能总是满足cando函数的判断,也就是top值总是位于hght的三分之二。因此可能会多次加载造成服务器负担加重。而每加载一次后把hght和top值赋0,也是这个原因。

这段代码的效果就是只要元素mypage的滚动条位置位于滚动条总长的三分之二时,追加table.html的内容到元素mypage中去。当然这样运行是无休止地加载下去。在真正的AJAX运用中,table.html可以换成asp或php脚本,接收get或post参数来进行处理,然后返回有意义的数据。jquery的get方法可以设置get方式的参数数据,比如:

$.get(”test.php”, { name: “boho”, id: “1″ } );

相当于http://localhost/test.php?name=boho&id=1这种形式的http访问。然后通过get方法的回调函数来获取test.php输出的内容:

$.get(”test.php”, {name:”boho”,id:”1″},function(data){
alert(”Data Loaded: ” + data);
});
Javascript 相关文章推荐
JavaScript 拖拉缩放效果
Dec 10 Javascript
JavaScript面向对象之Prototypes和继承
Jul 12 Javascript
javascript jscroll模拟html元素滚动条
Dec 18 Javascript
JS打开新窗口的2种方式
Apr 18 Javascript
dwz 如何去掉ajaxloading具体代码
May 22 Javascript
微信小程序 progress组件详解及实例代码
Oct 25 Javascript
简单理解js的prototype属性及使用
Dec 07 Javascript
Bootstrap中data-target 到底是什么
Feb 14 Javascript
webpack教程之webpack.config.js配置文件
Jul 05 Javascript
vue多级复杂列表展开/折叠及全选/分组全选实现
Nov 05 Javascript
Vue项目如何引入bootstrap、elementUI、echarts
Nov 26 Vue.js
用javascript制作qq注册动态页面
Apr 14 Javascript
js控制当再次点击按钮时的间隔时间
Jun 03 #Javascript
node.js中使用node-schedule实现定时任务实例
Jun 03 #Javascript
node.js WEB开发中图片验证码的实现方法
Jun 03 #Javascript
node.js实现多图片上传实例
Jun 03 #Javascript
node.js正则表达式获取网页中所有链接的代码实例
Jun 03 #Javascript
jquery处理json数据实例分析
Jun 03 #Javascript
js 获取浏览器版本以此来调整CSS的样式
Jun 03 #Javascript
You might like
PHP的几个常用数字判断函数代码
2012/04/24 PHP
php将session放入memcached的设置方法
2014/02/14 PHP
PHP中鲜为人知的10个函数
2014/02/28 PHP
php+mysqli实现批量执行插入、更新及删除数据的方法
2015/01/29 PHP
setAttribute 与 class冲突解决
2008/02/17 Javascript
JQuery 选择器 xpath 语法应用
2010/05/13 Javascript
jquery 追加tr和删除tr示例代码
2013/09/12 Javascript
JS实现点击复选框将按钮或文本框变为灰色不可用的方法
2015/08/11 Javascript
JavaScript中ES6 Babel正确安装过程
2016/07/18 Javascript
Angular企业级开发——MVC之控制器详解
2017/02/20 Javascript
详解使用grunt完成requirejs的合并压缩和js文件的版本控制
2017/03/02 Javascript
简单实现jQuery上传图片显示预览功能
2020/06/29 jQuery
详解weex默认webpack.config.js改造
2018/01/08 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
在vue中获取token,并将token写进header的方法
2018/09/26 Javascript
JavaScript实现滑块验证解锁
2021/01/07 Javascript
在Python中使用zlib模块进行数据压缩的教程
2015/06/26 Python
详谈python3 numpy-loadtxt的编码问题
2018/04/29 Python
Tensorflow分类器项目自定义数据读入的实现
2019/02/05 Python
使用python搭建服务器并实现Android端与之通信的方法
2019/06/28 Python
Django Form 实时从数据库中获取数据的操作方法
2019/07/25 Python
Tensorflow tf.nn.depthwise_conv2d如何实现深度卷积的
2020/04/20 Python
python3爬虫中多线程进行解锁操作实例
2020/11/25 Python
日本非常有名的内衣丝袜品牌:GUNZE
2017/01/06 全球购物
美国购买汽车零件网站:Buy Auto Parts
2018/04/02 全球购物
英语文学专业学生的自我评价
2013/10/31 职场文书
调解员先进事迹材料
2014/02/07 职场文书
农民工工资发放承诺书
2014/03/31 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
公休请假条
2014/04/11 职场文书
爱护草坪标语
2014/06/24 职场文书
优秀党员学习焦裕禄精神思想汇报范文
2014/09/10 职场文书
还款承诺书范本
2015/01/20 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
党员志愿者服务倡议书
2015/04/29 职场文书
解析mybatis-plus中的resultMap简单使用
2021/11/23 Java/Android