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

 更新时间:2014年05月13日 10:55:07   作者:  
这篇文章主要介绍了如何使用javscript实现滚动条滚动到页面底部自动加载增加页面内容,需要的朋友可以参考下
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中的垃圾回收机制

    这篇文章主要介绍了JavaScript中的垃圾回收机制,帮助大家更好的理解和使用JavaScript,感兴趣的朋友可以了解下
    2020-09-09
  • layui table 参数设置方法

    layui table 参数设置方法

    今天小编就为大家分享一篇layui table 参数设置方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-08-08
  • js+css实现红包雨效果

    js+css实现红包雨效果

    这篇文章主要为大家详细介绍了js+css实现红包雨效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-07-07
  • 关于window.pageYOffset和document.documentElement.scrollTop

    关于window.pageYOffset和document.documentElement.scrollTop

    window.pageYOffset:Netscape属性,指的是滚动条顶部到网页顶部的距离
    2011-04-04
  • js时间戳与日期格式之间转换详解

    js时间戳与日期格式之间转换详解

    这篇文章主要为大家详细介绍了js时间戳与日期格式之间转换,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-12-12
  • JavaScript实现对css文件压缩与合并的操作指南

    JavaScript实现对css文件压缩与合并的操作指南

    在前端开发中,优化资源加载是提升网站性能的重要环节,CSS 文件的压缩和合并能够有效减少 HTTP 请求次数和文件大小,从而加快页面加载速度,本文将分享我在 CSS 文件压缩与合并方面的实践经验,需要的朋友可以参考下
    2025-03-03
  • 浅谈JS 数字和字符串之间相互转化的纠纷

    浅谈JS 数字和字符串之间相互转化的纠纷

    下面小编就为大家带来一篇浅谈JS 数字和字符串之间相互转化的纠纷。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-10-10
  • JavaScript实现切换多张图片

    JavaScript实现切换多张图片

    这篇文章主要为大家详细介绍了JavaScript实现切换多张图片,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-01-01
  • 通过扫描二维码打开app的实现代码

    通过扫描二维码打开app的实现代码

    在项目开发中遇到这样的需求,扫描二维码打开app如果用户没有这个app则提示它跳转,怎么实现呢?下面小编给大家分享通过扫描二维码打开app的实现代码,感兴趣的朋友参考下吧
    2016-11-11
  • javascript跨域请求包装函数与用法示例

    javascript跨域请求包装函数与用法示例

    这篇文章主要介绍了javascript跨域请求包装函数与用法,结合实例形式分析了javascript基于ajax的跨域请求封装函数与相关使用技巧,需要的朋友可以参考下
    2016-11-11

最新评论