当滚动条滚动到页面底部自动加载增加内容的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中删除指定数组中指定的元素的代码
Feb 12 Javascript
contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
Sep 13 Javascript
Node.js生成HttpStatusCode辅助类发布到npm
Apr 09 Javascript
JS中把字符转成ASCII值的函数示例代码
Nov 21 Javascript
jQuery模拟点击A标记示例参考
Apr 17 Javascript
JavaScript实现鼠标点击后层展开效果的方法
May 13 Javascript
AngularJS基础 ng-disabled 指令详解及简单示例
Aug 01 Javascript
常见的浏览器Hack技巧整理
Jun 29 Javascript
node中Express 动态设置端口的方法
Aug 04 Javascript
vue 标签属性数据绑定和拼接的实现方法
May 17 Javascript
实例讲解JS中pop使用方法
Jan 27 Javascript
js+css实现全屏侧边栏
Jun 16 Javascript
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
法国:浪漫之都的咖啡文化
2021/03/03 咖啡文化
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
thinkphp实现图片上传功能分享
2014/03/04 PHP
UPUPW 更新 64 位 Apache 系列 PHP 7.0 正式版
2015/12/08 PHP
yii2学习教程之5种内置行为类详解
2017/08/03 PHP
Javascript的IE和Firefox兼容性汇编
2006/07/01 Javascript
用JavaScrpt实现文件夹简单轻松加密的实现方法图文
2008/09/08 Javascript
javascript 精粹笔记
2010/05/09 Javascript
javascript学习笔记(七)利用javascript来创建和存储cookie
2011/04/08 Javascript
用js实现小球的自由移动代码
2013/04/22 Javascript
jQuery表单验证插件解析(推荐)
2016/07/21 Javascript
jquery 点击元素后,滚动条滚动至该元素位置的方法
2016/08/05 Javascript
jQuery禁用快捷键例如禁用F5刷新 禁用右键菜单等的简单实现
2016/08/31 Javascript
微信小程序 五星评价功能的实现
2017/03/09 Javascript
详解vue-cli + webpack 多页面实例配置优化方法
2017/07/13 Javascript
JS判断数组那点事
2017/10/10 Javascript
vue实现点击展开点击收起效果
2018/04/27 Javascript
微信小程序中使用ECharts 异步加载数据的方法
2018/06/27 Javascript
微信小程序实现页面下拉刷新和上拉加载功能详解
2018/12/03 Javascript
python求列表交集的方法汇总
2014/11/10 Python
Python实现把json格式转换成文本或sql文件
2015/07/10 Python
wxpython中Textctrl回车事件无效的解决方法
2016/07/21 Python
Python制作简易注册登录系统
2016/12/15 Python
python不换行之end=与逗号的意思及用途
2017/11/21 Python
Python遍历pandas数据方法总结
2018/02/09 Python
python3.6+opencv3.4实现鼠标交互查看图片像素
2018/02/26 Python
PyQt5事件处理之定时在控件上显示信息的代码
2020/03/25 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
Python Matplotlib简易教程(小白教程)
2020/07/28 Python
python能做哪些生活有趣的事情
2020/09/09 Python
Python爬虫获取op.gg英雄联盟英雄对位胜率的源码
2021/01/29 Python
Sephora丝芙兰菲律宾官方网站:购买化妆品和护肤品
2017/04/05 全球购物
销售心得体会
2014/01/02 职场文书
运动会稿件300字
2014/02/14 职场文书
《鸟的天堂》教学反思
2016/02/19 职场文书
解决Windows Server2012 R2 无法安装 .NET Framework 3.5
2022/04/29 Servers