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 相关文章推荐
学习ExtJS accordion布局
Oct 08 Javascript
锋利的jQuery jQuery中的DOM操作
Mar 21 Javascript
JS控制阿拉伯数字转为中文大写示例代码
Sep 04 Javascript
基于vue-resource jsonp跨域问题的解决方法
Feb 03 Javascript
JavaScript实现微信红包算法及问题解决方法
Apr 26 Javascript
详解在vue-cli项目下简单使用mockjs模拟数据
Oct 19 Javascript
9102了,你还不会移动端真机调试吗
Mar 25 Javascript
详解vue父子组件关于模态框状态的绑定方案
Jun 05 Javascript
前端插件之Bootstrap Dual Listbox使用教程
Jul 23 Javascript
解决Vue动态加载本地图片问题
Oct 09 Javascript
JavaScript前端开发时数值运算的小技巧
Jul 28 Javascript
详解JS数组方法
Nov 20 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 动态多文件上传
2009/01/18 PHP
PHP用mysql数据库存储session的代码
2010/03/05 PHP
php中get_object_vars()方法用法实例
2015/02/08 PHP
WordPress中用于获取文章作者与分类信息的方法整理
2015/12/17 PHP
thinkphp多层MVC用法分析
2015/12/30 PHP
PHP中ltrim与rtrim去除左右空格及特殊字符实例
2016/01/07 PHP
php微信开发之图片回复功能
2018/06/14 PHP
jquery.post用法关于type设置问题补充
2014/01/03 Javascript
JS创建对象几种不同方法详解
2016/03/01 Javascript
JSON对象 详解及实例代码
2016/10/18 Javascript
bootstrap提示标签、提示框实现代码
2016/12/28 Javascript
jQuery实现的简单拖动层示例
2017/02/22 Javascript
Nodejs 获取时间加手机标识的32位标识实现代码
2017/03/07 NodeJs
jQuery插件HighCharts绘制2D带有Legend的饼图效果示例【附demo源码下载】
2017/03/10 Javascript
详解如何将angular-ui的图片轮播组件封装成一个指令
2017/05/09 Javascript
get  post jsonp三种数据交互形式实例详解
2017/08/25 Javascript
AngularJS实时获取并显示密码的方法
2018/02/06 Javascript
Postman模拟发送带token的请求方法
2018/03/31 Javascript
浅谈JavaScript_DOM学习篇_图片切换小案例
2019/03/19 Javascript
JavaScript中BOM对象原理与用法分析
2019/07/09 Javascript
jquery更改元素属性attr()方法操作示例
2020/05/22 jQuery
[01:09:50]VP vs Pain 2018国际邀请赛小组赛BO2 第二场
2018/08/20 DOTA
详解python3中socket套接字的编码问题解决
2017/07/01 Python
Python读取word文本操作详解
2018/01/22 Python
利用python Selenium实现自动登陆京东签到领金币功能
2019/10/31 Python
pytorch实现从本地加载 .pth 格式模型
2020/02/14 Python
Python爬虫之Selenium鼠标事件的实现
2020/12/04 Python
Html5实现用户注册自动校验功能实例代码
2016/05/24 HTML / CSS
Holiday Inn中国官网:IHG旗下假日酒店预订
2018/04/08 全球购物
餐饮业会计岗位职责
2013/12/19 职场文书
大学军训感言
2014/01/10 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
物业总经理岗位职责
2014/02/28 职场文书
红色故事演讲稿
2014/05/22 职场文书
2014年团员学习十八大思想汇报
2014/09/13 职场文书
返乡农民工证明
2015/06/24 职场文书