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 相关文章推荐
jquery 简单导航实现代码
Sep 11 Javascript
extjs之去除s.gif的影响
Dec 25 Javascript
jQuery 操作option的实现代码
Mar 03 Javascript
jQuery旋转插件—rotate支持(ie/Firefox/SafariOpera/Chrome)
Jan 16 Javascript
等待指定时间后自动跳转或关闭当前页面的js代码
Jul 09 Javascript
js阻止默认事件与js阻止事件冒泡示例分享 js阻止冒泡事件
Jan 27 Javascript
一个不错的字符串转码解码函数(自写)
Jul 31 Javascript
jQuery的css() 方法使用指南
May 03 Javascript
jQuery实现Flash效果上下翻动的中英文导航菜单代码
Sep 22 Javascript
ionic js 复选框 与普通的 HTML 复选框到底有没区别
Jun 06 Javascript
jQuery.cookie.js使用方法及相关参数解释
Mar 06 Javascript
React Native验证码倒计时工具类分享
Oct 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中时间轴开发(刚刚、5分钟前、昨天10:23等)
2011/10/03 PHP
如何阻止网站被恶意反向代理访问(防网站镜像)
2014/03/18 PHP
Thinkphp框架开发移动端接口(2)
2016/08/18 PHP
php获取微信基础接口凭证Access_token
2018/08/23 PHP
js常用函数 不错
2006/09/08 Javascript
javascript页面上使用动态时间具体实现
2014/03/18 Javascript
浅谈jQuery中 wrap() wrapAll() 与 wrapInner()的差异
2014/11/12 Javascript
AngularJS入门知识之MVW类框架的编程思想探讨
2014/12/08 Javascript
jQuery验证元素是否为空的两种常用方法
2015/03/17 Javascript
JS实现仿QQ效果的三级竖向菜单
2015/09/25 Javascript
探究Javascript模板引擎mustache.js使用方法
2016/01/26 Javascript
使用 stylelint检查CSS_StyleLint
2016/04/28 Javascript
浅析JSONP技术原理及实现
2016/06/08 Javascript
require简单实现单页应用程序(SPA)
2016/07/12 Javascript
基于AGS JS开发自定义贴图图层
2017/03/31 Javascript
详解A标签中href=&quot;&quot;的几种用法
2017/08/20 Javascript
vue中实现methods一个方法调用另外一个方法
2018/02/08 Javascript
基于jQuery.i18n实现web前端的国际化
2018/05/04 jQuery
Vue实现图片与文字混输效果
2019/12/04 Javascript
koa-passport实现本地验证的方法示例
2020/02/20 Javascript
[03:55]TI9战队采访——TNC Predator
2019/08/22 DOTA
Python统计文件中去重后uuid个数的方法
2015/07/30 Python
python写入并获取剪切板内容的实例
2018/05/31 Python
导入tensorflow:ImportError: libcublas.so.9.0 报错
2020/01/06 Python
TensorFlow2.0:张量的合并与分割实例
2020/01/19 Python
基于Tensorflow批量数据的输入实现方式
2020/02/05 Python
Abbott Lyon官网:女士手表、珠宝及配件
2020/12/26 全球购物
匡威俄罗斯官网:Converse俄罗斯
2020/05/09 全球购物
劳资协议书范本
2014/04/23 职场文书
夏季药店促销方案
2014/08/22 职场文书
现实表现材料范文
2014/12/23 职场文书
贷款承诺书
2015/01/20 职场文书
结婚老公保证书
2015/02/26 职场文书
医生个人年度总结
2015/02/28 职场文书
Django展示可视化图表的多种方式
2021/04/08 Python
mysql配置SSL证书登录的实现
2021/09/04 MySQL