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 01 Javascript
javascript下查找父节点的简单方法
Aug 13 Javascript
JS 有名函数表达式全面解析
Mar 19 Javascript
JS判断元素为数字的奇异写法分享
Aug 01 Javascript
深入理解JavaScript高级之词法作用域和作用域链
Dec 10 Javascript
详解js中构造流程图的核心技术JsPlumb(2)
Dec 08 Javascript
利用jquery获取select下拉框的值
Nov 23 Javascript
详解Node中导入模块require和import的区别
Aug 11 Javascript
JS数组去重常用方法实例小结【4种方法】
May 28 Javascript
JS实现textarea通过换行或者回车把多行数字分割成数组并且去掉数组中空的值
Oct 29 Javascript
深入理解react 组件类型及使用场景
Mar 07 Javascript
基于JS抓取某高校附近共享单车位置 使用web方式展示位置变化代码实例
Aug 27 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
全国FM电台频率大全 - 28 甘肃省
2020/03/11 无线电
屏蔽浏览器缓存另类方法
2006/10/09 PHP
php中常见的sql攻击正则表达式汇总
2014/11/06 PHP
父子窗体间传递JSON格式的数据的代码
2010/12/25 Javascript
减少访问DOM的次数提升javascript性能
2014/02/24 Javascript
可恶的ie8提示缺少id未定义
2014/03/20 Javascript
js使用removeChild方法动态删除div元素
2014/08/01 Javascript
JavaScript实现获取dom中class的方法
2015/02/09 Javascript
原生js实现addClass,removeClass,hasClass方法
2016/04/27 Javascript
Angularjs 自定义服务的三种方式(推荐)
2016/08/02 Javascript
浅谈Node Inspector 代理实现
2017/10/19 Javascript
vue移动端使用canvas签名的实现
2020/01/15 Javascript
javascript canvas API内容整理
2020/02/16 Javascript
jQuery实现简单全选框
2020/09/13 jQuery
JavaScript实现前端倒计时效果
2021/02/09 Javascript
[10:49]2014国际邀请赛 叨叨刀塔第二期为真正的电竞喝彩
2014/07/21 DOTA
Python数据分析库pandas基本操作方法
2018/04/08 Python
Python基于pandas实现json格式转换成dataframe的方法
2018/06/22 Python
dataframe 按条件替换某一列中的值方法
2019/01/29 Python
Python实现合并两个有序链表的方法示例
2019/01/31 Python
python实现简单银行管理系统
2019/10/25 Python
如何基于Python创建目录文件夹
2019/12/31 Python
Python使用循环神经网络解决文本分类问题的方法详解
2020/01/16 Python
PyCharm无法引用自身项目解决方式
2020/02/12 Python
通过Python扫描代码关键字并进行预警的实现方法
2020/05/24 Python
Python用摘要算法生成token及检验token的示例代码
2020/12/01 Python
python制作抽奖程序代码详解
2021/01/15 Python
详解CSS3 用border写 空心三角箭头 (两种写法)
2017/09/29 HTML / CSS
浅谈HTML5中dialog元素尝鲜
2018/10/15 HTML / CSS
英国领先的露营和露营车品牌之一:OLPRO
2019/08/06 全球购物
介绍下Java中==和equals的区别
2013/09/01 面试题
测绘工程个人的自我评价
2013/11/10 职场文书
情人节活动策划方案
2014/02/27 职场文书
2019求职信大礼包
2019/05/15 职场文书
导游词之临安白水涧
2019/11/05 职场文书
laravel添加角色和模糊搜索功能的实现代码
2021/06/22 PHP