当滚动条滚动到页面底部自动加载增加内容的js代码


Posted in Javascript onMay 13, 2014

1,注册页面滚动事件,window.onscroll = function(){ };

2,相关获取页面高度、滚动条位置、文档高度的函数:

//获取滚动条当前的位置 
function getScrollTop() { 
var scrollTop = 0; 
if (document.documentElement && document.documentElement.scrollTop) { 
scrollTop = document.documentElement.scrollTop; 
} 
else if (document.body) { 
scrollTop = document.body.scrollTop; 
} 
return scrollTop; 
} //获取当前可是范围的高度 
function getClientHeight() { 
var clientHeight = 0; 
if (document.body.clientHeight && document.documentElement.clientHeight) { 
clientHeight = Math.min(document.body.clientHeight, document.documentElement.clientHeight); 
} 
else { 
clientHeight = Math.max(document.body.clientHeight, document.documentElement.clientHeight); 
} 
return clientHeight; 
} 
//获取文档完整的高度 
function getScrollHeight() { 
return Math.max(document.body.scrollHeight, document.documentElement.scrollHeight); 
}

3,在html页面底部增加代码:
<script> 
window.onscroll = function () { 
if (getScrollTop() + getClientHeight() == getScrollHeight()) { 
alert("到达底部"); 
} 
} 
</script>

这样当滚动条到达页面底部时就会触发alert("到达底部")。下面要做的就是将触发的功能改为ajax调用,往页面中动态增加内容。

4,动态增加页面元素的示例代码:

var newnode = document.createElement("a"); 
newnode.setAttribute("href", "#"); 
newnode.innerHTML = "new item"; 
document.body.appendChild(newnode); 
var newline = document.createElement("br"); 
document.body.appendChild(newline);

将这段代码替换掉alert("到达底部");,就可以看到,当滚动条滚动到底部时,页面底部就会增加一行”new item“,不同往下滚动,不停增加,无止尽。

5,将示例代码修改为ajax相关代码:

<script> 
window.onscroll = function () { 
if (getScrollTop() + getClientHeight() == getScrollHeight()) { 
var xmlHttpReq = null; 
//IE浏览器使用ActiveX 
if (window.ActiveXObject) { 
xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP"); 
} 
//其它浏览器使用window的子对象XMLHttpRequest 
else if (window.XMLHttpRequest) { 
xmlHttpReq = new XMLHttpRequest(); 
} if (xmlHttpReq != null) { 
//设置请求(没有真正打开),true:表示异步 
xmlHttpReq.open("GET", "/ajaxtest", true); 
//设置回调,当请求的状态发生变化时,就会被调用,传递参数xmlHttpReq 
xmlHttpReq.onreadystatechange = function () { onajaxtest(xmlHttpReq); }; 
//提交请求 
xmlHttpReq.send(null); 
} 
} 
} 
function onajaxtest(req) { 
var newnode = document.createElement("a"); 
newnode.setAttribute("href", "#"); 
newnode.innerHTML = req.readyState + " " + req.status + " " + req.responseText; 
document.body.appendChild(newnode); 
var newline = document.createElement("br"); 
document.body.appendChild(newline); 
} 
</script>

当滚动条到页面底部之后,就会增加以下节点,如下:

2 200
3 200 ajax ok
4 200 ajax ok

这里2、3、4,就是请求的状态readyState,200就是http的回应状态status,ajax ok是/ajaxtext应用返回的文本,具体查看以下参考资料。

按照XMLHttpRequest的的文档说明,应该能够打印出:

0 200

1 200

2 200

3 200 ajax ok

4 200 ajax ok

但是我这里没有打印出0和1这两个状态,这是为什么呢,路过的高手方便吱一声吗?

Javascript 相关文章推荐
Javascript中string转date示例代码
Nov 01 Javascript
js怎么判断flash swf文件是否加载完毕
Aug 14 Javascript
jquery右下角自动弹出可关闭的广告层
May 08 Javascript
AngularJS封装指令方法详解
Dec 12 Javascript
基于Vue如何封装分页组件
Dec 16 Javascript
详解微信小程序——自定义圆形进度条
Dec 29 Javascript
vue注册组件的几种方式总结
Mar 08 Javascript
使用express来代理服务的方法
Jun 21 Javascript
利用d3.js制作连线动画图与编辑器的方法实例
Sep 05 Javascript
JS操作字符串转数字的常见方法示例
Oct 29 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
Mar 04 Javascript
vue开发chrome插件,实现获取界面数据和保存到数据库功能
Dec 01 Vue.js
js语法学习之判断一个对象是否为数组
May 13 #Javascript
js中定义一个变量并判断其是否为空的方法
May 13 #Javascript
jQuery 计算iframe 窗口大小的方法
May 13 #Javascript
js 调用百度地图api并在地图上进行打点添加标注
May 13 #Javascript
两种不同的方法实现js对checkbox进行全选和反选
May 13 #Javascript
js浏览器本地存储store.js介绍及应用
May 13 #Javascript
js 获取时间间隔实现代码
May 12 #Javascript
You might like
php 不使用js实现页面跳转
2014/02/11 PHP
推荐一本PHP程序猿都应该拜读的书
2014/12/31 PHP
一次因composer错误使用引发的问题与解决
2019/03/06 PHP
Laravel框架中缓存的使用方法分析
2019/09/06 PHP
jQuery与其它库冲突的解决方法
2010/06/25 Javascript
让AJAX不依赖后端接口实现方案
2012/12/03 Javascript
Js 回车换行处理的办法及replace方法应用
2013/01/24 Javascript
Js获取下拉框选定项的值和文本的实现代码
2014/02/26 Javascript
js的toUpperCase方法用法实例
2015/01/27 Javascript
JS实现JSON.stringify的实例代码讲解
2017/02/07 Javascript
正则 js分转元带千分符号详解
2017/03/08 Javascript
ES6正则的扩展实例详解
2017/04/25 Javascript
react 实现页面代码分割、按需加载的方法
2018/04/03 Javascript
使用typescript开发angular模块并发布npm包
2018/04/19 Javascript
简述JS浏览器的三种弹窗
2018/07/15 Javascript
vue设置导航栏、侧边栏为公共页面的例子
2019/11/01 Javascript
React 实现车牌键盘的示例代码
2019/12/20 Javascript
JavaScript实现矩形块大小任意缩放
2020/08/25 Javascript
JS异步宏队列微队列原理详解
2020/09/09 Javascript
Python 可爱的大小写
2008/09/06 Python
Python实现的插入排序,冒泡排序,快速排序,选择排序算法示例
2019/05/04 Python
python实现植物大战僵尸游戏实例代码
2019/06/10 Python
python代码编写计算器小程序
2020/03/30 Python
Python基于callable函数检测对象是否可被调用
2020/10/16 Python
Python导入父文件夹中模块并读取当前文件夹内的资源
2020/11/19 Python
Django模板报TemplateDoesNotExist异常(亲测可行)
2020/12/18 Python
CSS3动画:5种预载动画效果实例
2017/04/05 HTML / CSS
加拿大在线隐形眼镜专家:PerfectLens.ca
2016/11/19 全球购物
了解AppleShare protocol(AppleShare协议)吗
2015/08/28 面试题
群众路线剖析材料范文
2014/10/09 职场文书
2014年计划生育协会工作总结
2014/11/14 职场文书
汉字听写大会观后感
2015/06/12 职场文书
导游词之安徽九华山
2019/09/18 职场文书
导游词之无锡唐城
2019/12/12 职场文书
Python中的套接字编程是什么?
2021/06/21 Python
mybatis 解决从列名到属性名的自动映射失败问题
2021/06/30 Java/Android