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帮助之CSS尺寸(五)outerHeight、outerWidth
Nov 14 Javascript
JavaScript获取页面上某个元素的代码
Mar 13 Javascript
JS实现切换标签页效果实例代码
Nov 01 Javascript
Js可拖拽放大的层拖动特效实现方法
Feb 25 Javascript
Jquery easyui 实现动态树
Nov 17 Javascript
JavaScript获取各大浏览器信息图示
Nov 20 Javascript
jQuery web 组件 后台日历价格、库存设置的代码
Oct 14 Javascript
Vue 兄弟组件通信的方法(不使用Vuex)
Oct 26 Javascript
如何在 JavaScript 中更好地利用数组
Sep 27 Javascript
微信小程序之左右布局的实现代码
Dec 13 Javascript
基于JavaScript实现留言板功能
Mar 16 Javascript
基于原生js实现九宫格算法代码实例
Jul 03 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持久连接mysql_pconnect()函数使用介绍
2012/02/05 PHP
PHP URL路由类实例
2013/11/12 PHP
浅谈COOKIE和SESSION区别
2015/07/19 PHP
php短信接口代码
2016/05/13 PHP
利用PHP获取网站访客的所在地位置
2017/01/18 PHP
PHP基于imagick扩展实现合成图片的两种方法【附imagick扩展下载】
2017/11/14 PHP
Laravel 解决419错误 -ajax请求错误的问题(CSRF验证)
2019/10/25 PHP
tp5.1 框架数据库高级查询技巧实例总结
2020/05/25 PHP
javascript 获取表单file全路径
2009/12/31 Javascript
javascript cookies 设置、读取、删除实例代码
2010/04/12 Javascript
解析DHTML,JavaScript,DOM,BOM以及WEB标准的描述
2013/06/19 Javascript
javascript同页面多次调用弹出层具体实例代码
2013/08/16 Javascript
浅析JavaScript中的事件机制
2015/06/04 Javascript
JavaScript与jQuery实现的闪烁输入效果
2016/02/18 Javascript
老生常谈原生JS执行环境与作用域
2016/11/22 Javascript
EditPlus 正则表达式 实战(3)
2016/12/15 Javascript
vue+springboot前后端分离实现单点登录跨域问题解决方法
2018/01/30 Javascript
vue.js element-ui tree树形控件改iview的方法
2018/03/29 Javascript
nodejs多版本管理总结
2018/04/03 NodeJs
Vue监听一个数组id是否与另一个数组id相同的方法
2018/09/26 Javascript
微信小程序tabbar底部导航
2018/11/05 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
2019/06/18 jQuery
微信小程序列表时间戳转换实现过程解析
2019/10/12 Javascript
js实现带积分弹球小游戏
2020/07/21 Javascript
vue3.0自定义指令(drectives)知识点总结
2020/12/27 Vue.js
Python常见的pandas用法demo示例
2019/03/16 Python
安装多个版本的TensorFlow的方法步骤
2020/04/21 Python
纯CSS3大转盘抽奖示例代码(响应式、可配置)
2017/01/13 HTML / CSS
CSS3制作轮播图的一种方法
2019/11/11 HTML / CSS
大学生自我鉴定范文
2013/12/28 职场文书
志愿者活动总结
2014/04/28 职场文书
关于旅游的活动方案
2014/08/15 职场文书
高中校园广播稿3篇
2014/09/29 职场文书
群众路线教育实践活动整改方案(个人版)
2014/10/25 职场文书
电力安全学习心得体会
2016/01/18 职场文书
Golang bufio详细讲解
2022/04/21 Golang