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 相关文章推荐
30个精美的jQuery幻灯片效果插件和教程
Aug 23 Javascript
js处理自己不能定义二维数组的方法详解
Mar 03 Javascript
浅析JavaScript基本类型与引用类型
May 28 Javascript
js实现iframe自动自适应高度的方法
Feb 17 Javascript
jquery操作angularjs对象
Jun 26 Javascript
jQuery设置聚焦并使光标位置在文字最后的实现方法
Aug 02 Javascript
Vue.js实现拖放效果的实例
Sep 30 Javascript
jQuery实现复制到粘贴板功能
Feb 11 Javascript
JavaScript中数组常见操作技巧
Sep 01 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
vue中的router-view组件的使用教程
Oct 23 Javascript
Vue 3.0 全家桶抢先体验
Apr 28 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
Yii2.0 模态弹出框+ajax提交表单
2016/05/22 PHP
Laravel框架实现利用中间件进行操作日志记录功能
2018/06/06 PHP
PHP实现的抓取小说网站内容功能示例
2019/06/27 PHP
ExtJS的FieldSet的column列布局
2009/11/20 Javascript
js中的前绑定和后绑定详解
2013/08/01 Javascript
JS常用正则表达式总结
2013/11/12 Javascript
JavaScript运行机制之事件循环(Event Loop)详解
2014/10/10 Javascript
jQuery实现Twitter的自动文字补齐特效
2014/11/28 Javascript
JavaScript+html5 canvas实现本地截图教程
2020/04/16 Javascript
基于jQuery实现表格内容的筛选功能
2016/08/21 Javascript
javascript创建对象的3种方法
2016/11/02 Javascript
详解VUE的状态控制与延时加载刷新
2017/03/27 Javascript
webpack打包js文件及部署的实现方法
2017/12/18 Javascript
node.js爬取中关村的在线电瓶车信息
2018/11/13 Javascript
微信小程序模板消息推送的两种实现方式
2019/08/27 Javascript
layui表格内放置图片,并点击放大的实例
2019/09/10 Javascript
python字符串加密解密的三种方法分享(base64 win32com)
2014/01/19 Python
Python中pygame安装方法图文详解
2015/11/11 Python
Python定时器实例代码
2017/11/01 Python
详解django2中关于时间处理策略
2019/03/06 Python
Python hashlib模块加密过程解析
2019/11/05 Python
加拿大百叶窗和窗帘定制网站:Blinds
2017/01/30 全球购物
Lou & Grey美国官网:主打舒适性面料服饰
2017/12/21 全球购物
中学生打架检讨书
2014/02/10 职场文书
竞选部长演讲稿
2014/04/26 职场文书
儿童生日会策划方案
2014/05/15 职场文书
乡镇党委书记个人整改措施
2014/09/15 职场文书
四风问题班子对照检查材料
2014/09/27 职场文书
校园歌手大赛主持词
2015/07/03 职场文书
朋友聚会祝酒词
2015/08/10 职场文书
音乐研修感悟
2015/11/18 职场文书
2019财务毕业实习报告
2019/06/27 职场文书
python 通过使用Yolact训练数据集
2021/04/06 Python
Oracle设置DB、监听和EM开机启动的方法
2021/04/25 Oracle
react国际化react-intl的使用
2021/05/06 Javascript
古见同学有交流障碍症 第二季宣传CM公开播出
2022/04/11 日漫