Google阅读器上有一个AJAX效果很不错,就是阅读项目时不需要翻页,浏览器条往下拉到一定位置时自动加载新的一批项目进来,一直到所有项目加载完为止。对于我来说再好不过了,因为我很不喜欢翻页,尤其是输入页码再定位到页。

要知道,数据量增加很频繁时,要通过定位页码来找到目标数据似乎并没有什么意义。我觉得用户体验成熟的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);
});

最新资讯
日(J)本(P)电子支付“翻车”连发群体盗刷 恐慌持续升级

日(J)本(P)电子支付“翻车”

日(J)本(P)最大的移动运营商“都科摩”的电子支付系统,曾接连
《财富》公布“改变世界”榜单:阿里、Zoom等入选

《财富》公布“改变世

日前,第六届《财富》杂志2020年度“改变世界”榜单出炉
打车界拼多多花小猪走红 滴滴自造对手意欲何为?

打车界拼多多花小猪走

在出行领域中,滴滴已经没有对手了,让人费解的是,为什么已
马斯克:Model Y新制造技术遭遇挑战 难度增加100倍

马斯克:Model Y新制造

特斯拉CEO埃隆·马斯克(Elon Musk)今日表示,大规模生产基
滴滴出行:已接入腾讯地图聚合打车业务

滴滴出行:已接入腾讯地

滴滴方面表示,目前滴滴出行已接入腾讯地图聚合打车业务
牵手腾讯九城 法国休闲游戏巨头Voodoo加码中国市场

牵手腾讯九城 法国休

就在上个月中旬,Voodoo对外发布了腾讯将收购该公司部分
最新文章
详解Vue的ref特性的使用

详解Vue的ref特性的使

这篇文章主要介绍了详解Vue的ref特性的使用,文中通过
vue学习笔记之slot插槽基本用法实例分析

vue学习笔记之slot插

这篇文章主要介绍了vue学习笔记之slot插槽基本用法,结
vue跳转方式(打开新页面)及传参操作示例

vue跳转方式(打开新页

这篇文章主要介绍了vue跳转方式(打开新页面)及传参操作,
vue学习笔记之过滤器的基本使用方法实例分析

vue学习笔记之过滤器

这篇文章主要介绍了vue学习笔记之过滤器的基本使用方
js获取本日、本周、本月的时间代码

js获取本日、本周、本

本篇文章给大家分享的内容是利用js如何获取本日、本周
node crawler如何添加promise支持

node crawler如何添加

这篇文章主要介绍了node crawler如何添加promise支持,