zoukankan      html  css  js  c++  java
  • 当滚动条滚动到页面底部自动加载增加内容的js代码

    这篇文章主要介绍了如何使用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

  • 相关阅读:
    [Swift实际操作]七、常见概念-(2)点CGPoint和变形CGAffineTransform的使用
    [Swift实际操作]七、常见概念-(1).范围Range、ClosedRange和NSRange的使用实际操作
    [Swift]LeetCode263. 丑数 | Ugly Number
    [Swift]LeetCode258. 各位相加 | Add Digits
    [Swift]LeetCode920. 播放列表的数量 | Number of Music Playlists
    Web开发中,使用表格来展示每个角色对应的权限
    Web开发中,使用表格来展示每个角色对应的权限
    请妥善保管自己的QQ等网络帐号
    请妥善保管自己的QQ等网络帐号
    网络广告行业资料整理
  • 原文地址:https://www.cnblogs.com/firstdream/p/5497652.html
Copyright © 2011-2022 走看看