HTML5页面滑动到最底部触发内容加载 javascript实现
--> -->
最近在做一个html5的小项目,虽然很小,但是考虑到用户网络制式,流量,甚至海外访问的速度优先保证.
所以对于一些功能的实现不再考虑依赖任何第三方的包.
今天和大家分享的是 html5 页面下拉到最底部时实现自动刷新加载新数据.
当然,也不一定是html5下适用,web页面都适用.
首先要清楚3个定义:
- 文档高度
这是整个页面的高度
- 可视窗口高度
这是你看到的浏览器可视屏幕高度
- 滚动条滚动高度
滚动条下滑过的高度
所以, 当 文档高度 = 可视窗口高度 + 滚动条高度 时,滚动条正好到底.
那我们就来定义三个不同的方法,分别获取上面3个高度值
//文档高度
function getDocumentTop() {
var scrollTop = 0, bodyScrollTop = 0, documentScrollTop = 0;
if (document.body) {
bodyScrollTop = document.body.scrollTop;
}
if (document.documentElement) {
documentScrollTop = document.documentElement.scrollTop;
}
scrollTop = (bodyScrollTop - documentScrollTop > 0) ? bodyScrollTop : documentScrollTop;
return scrollTop;
}
//可视窗口高度
function getWindowHeight() {
var windowHeight = 0;
if (document.compatMode == "CSS1Compat") {
windowHeight = document.documentElement.clientHeight;
} else {
windowHeight = document.body.clientHeight;
}
return windowHeight;
}
//滚动条滚动高度
function getScrollHeight() {
var scrollHeight = 0, bodyScrollHeight = 0, documentScrollHeight = 0;
if (document.body) {
bodyScrollHeight = document.body.scrollHeight;
}
if (document.documentElement) {
documentScrollHeight = document.documentElement.scrollHeight;
}
scrollHeight = (bodyScrollHeight - documentScrollHeight > 0) ? bodyScrollHeight : documentScrollHeight;
return scrollHeight;
}
下面我们需要一个监听滚动条的事件
window.onscroll = function () {
//监听事件内容
}
当滚动条移动马上就出发我们上面定义的事件触发函数,但是我们要求的是滚动条到底后才触发,所以自然这个触发事件里面需要逻辑控制一下.
window.onscroll = function () {
//监听事件内容
if(getDocumentTop() == getWindowHeight() + getScrollTop()){
//当滚动条到底时,这里是触发内容
//异步请求数据,局部刷新dom
ajax_function()
}
}