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 相关文章推荐
让广告代码不再影响你的网页加载速度
Jul 07 Javascript
javascript Firefox与IE 替换节点的方法
Feb 24 Javascript
JS自动缩小超出大小的图片
Oct 12 Javascript
js文件Cookie存取值示例代码
Feb 20 Javascript
如何实现chrome浏览器关闭页面时弹出“确定要离开此面吗?”
Mar 05 Javascript
jQuery EasyUI之DataGrid使用实例详解
Jan 04 Javascript
jQuery插件简单学习实例教程
Jul 01 Javascript
jquery根据一个值来选中select下的option实例代码
Aug 29 Javascript
Jquery Easyui分割按钮组件SplitButton使用详解(17)
Dec 18 Javascript
详解vue项目的构建,打包,发布全过程
Nov 23 Javascript
jquery实现加载更多&quot;转圈圈&quot;效果(示例代码)
Nov 09 jQuery
AJAX检测用户名是否存在的方法
Mar 24 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环境配置 php5 MySQL5 apache2 phpmyadmin安装与配置图文教程
2007/03/16 PHP
php中导出数据到excel时数字变为科学计数的解决方法
2013/02/03 PHP
thinkPHP5框架自定义验证器实现方法分析
2018/06/11 PHP
ThinkPHP框架整合微信支付之Native 扫码支付模式二图文详解
2019/04/09 PHP
将CKfinder整合进CKEditor3.0的新方法
2010/01/10 Javascript
Jquery实现带动画效果的经典二级导航菜单
2013/03/22 Javascript
多个jquery.datatable共存,checkbox全选异常的快速解决方法
2013/12/10 Javascript
浅析jQuery中调用ajax方法时在不同浏览器中遇到的问题
2014/06/11 Javascript
jQuery中remove()方法用法实例
2014/12/25 Javascript
jQuery内容折叠效果插件用法实例分析(附demo源码)
2016/04/28 Javascript
使用bootstrap实现多窗口和拖动效果
2016/09/22 Javascript
详解js的六大数据类型
2016/12/27 Javascript
Bootstrap中data-target 到底是什么
2017/02/14 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
vue子父组件通信的实现代码
2017/07/09 Javascript
vue实现pdf导出解决生成canvas模糊等问题(推荐)
2018/10/18 Javascript
layer父页获取弹出层输入框里面的值方法
2019/09/02 Javascript
layui自定义工具栏的方法
2019/09/19 Javascript
node.js通过Sequelize 连接MySQL的方法
2020/12/28 Javascript
[53:10]完美世界DOTA2联赛决赛日 FTD vs GXR 第二场 11.08
2020/11/11 DOTA
Python装饰器知识点补充
2018/05/28 Python
对Python3中bytes和HexStr之间的转换详解
2018/12/04 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python读取配置文件方式(ini、yaml、xml)
2020/04/09 Python
python pyecharts 实现一个文件绘制多张图
2020/05/13 Python
使用CSS3的font-face字体嵌入样式的方法讲解
2016/05/13 HTML / CSS
美国在线鞋类零售商:LifeStride
2019/06/09 全球购物
预备党员入党思想汇报
2014/01/04 职场文书
学生手册评语
2014/05/05 职场文书
外联部演讲稿
2014/05/24 职场文书
安全生产知识竞赛活动总结
2014/07/07 职场文书
上班迟到检讨书300字
2014/10/18 职场文书
详解Apache SkyWalking 告警配置指南
2021/04/22 Servers
Java并发编程之详解CyclicBarrier线程同步
2021/06/23 Java/Android
python数据可视化JupyterLab实用扩展程序Mito
2021/11/20 Python
bat批处理之字符串操作的实现
2022/03/16 Python