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 相关文章推荐
一个JS小玩意 几个属性相加不能超过一个特定值.
Sep 29 Javascript
event.srcElement 用法笔记e.target
Dec 18 Javascript
input 输入框内的输入事件详细分析
Mar 17 Javascript
JavaScript 存在陷阱 删除某一区域所有节点
May 10 Javascript
微信小程序 icon组件详细及实例代码
Oct 25 Javascript
自己封装的一个原生JS拖动方法(推荐)
Nov 22 Javascript
微信小程序 解析网页内容详解及实例
Feb 22 Javascript
Vue.directive 自定义指令的问题小结
Mar 04 Javascript
vue 实现的树形菜的实例代码
Mar 19 Javascript
JS实现动态添加外部js、css到head标签的方法
Jun 05 Javascript
微信小程序基于高德地图查找位置并显示文字
Oct 30 Javascript
解决VUE 在IE下出现ReferenceError: Promise未定义的问题
Nov 07 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
Session的工作方式
2006/10/09 PHP
php环境配置 php5 mysql5 apache2 phpmyadmin安装与配置
2006/11/17 PHP
php将数据库中所有内容生成静态html文档的代码
2010/04/12 PHP
鸡肋的PHP单例模式应用详解
2013/06/03 PHP
php 模拟post_验证页面的返回状态(实例讲解)
2013/10/28 PHP
php遍历目录方法小结
2015/03/10 PHP
window.onload 加载完毕的问题及解决方案(下)
2009/07/09 Javascript
ie下动态加态js文件的方法
2011/09/13 Javascript
css3元素简单的闪烁效果实现(html5 jquery)
2013/12/28 Javascript
jQuery 滑动方法slideDown向下滑动元素
2014/01/16 Javascript
Javascript中引用示例介绍
2014/02/21 Javascript
深入理解JavaScript系列(18):面向对象编程之ECMAScript实现
2015/03/05 Javascript
JS自定义选项卡函数及用法实例分析
2015/09/02 Javascript
JavaScript判断浏览器对CSS3属性是否支持的多种方法
2016/11/13 Javascript
Angular.js实现注册系统的实例详解
2016/12/18 Javascript
AngularJS入门示例之Hello World详解
2017/01/04 Javascript
基于JS实现仿百度百家主页的轮播图效果
2017/03/06 Javascript
js实现动态改变radio状态的方法
2018/02/28 Javascript
JS简单获取并修改input文本框内容的方法示例
2018/04/08 Javascript
Vue实现用户自定义字段显示数据的方法
2018/08/28 Javascript
js正则取值的结果数组调试方法
2018/10/10 Javascript
json 带斜杠时如何解析的实现
2019/08/12 Javascript
Vue 中如何将函数作为 props 传递给组件的实现代码
2020/05/12 Javascript
Node.js API详解之 dgram模块用法实例分析
2020/06/05 Javascript
[04:40]2016个国际邀请赛中国区预选赛场地——华西村观战指南
2016/06/25 DOTA
python中pylint使用方法(pylint代码检查)
2018/04/06 Python
我们为什么要减少Python中循环的使用
2019/07/10 Python
关于win10在tensorflow的安装及在pycharm中运行步骤详解
2020/03/16 Python
Python matplotlib图例放在外侧保存时显示不完整问题解决
2020/07/28 Python
学校食堂采购员岗位职责
2013/12/05 职场文书
新学期班主任寄语
2014/01/18 职场文书
毕业晚会主持词
2014/03/24 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
在HTML5 localStorage中存储对象的示例代码
2021/04/21 Javascript
世界无敌的ICOM IC-R9500宽频接收机
2022/03/25 无线电
java中为什么说子类的构造方法默认访问的是父类的无参构造方法
2022/04/13 Java/Android