jQuery判断网页是否已经滚动到浏览器底部的实现方法


Posted in jQuery onOctober 27, 2017

有些需求中,需要当用户滚动到浏览器底部的时候,再加载新的内容。笔者在这里介绍如何使用Jquery判断用户是否已经浏览到网页的底部了。

在了解下面的知识点之前,笔者这里先介绍几个概念。

$(window).height(); //用于获取浏览器显示区域的高度

$(window).width(); //用于获取浏览器显示区域的宽度

$(document.body).height(); //获取页面文档的高度

$(document.body).width(); //获取页面文档的宽度

$(document).scrollTop(); //获取垂直滚动条到顶部的垂直距离

$(document).scrollLeft(); //获取水平滚动条到左边的水平距离

通过上面的知识点,可以知道:浏览器显示区域的高度+垂直滚动条距离顶部距离<=网页的高度。

有了这个结论,那么实现起来就容易了。下面的代码实现了,判断用户是否浏览到了网页的底部。

$(window).scroll(function(){
 var h=$(document.body).height();//网页文档的高度
 var c = $(document).scrollTop();//滚动条距离网页顶部的高度
 var wh = $(window).height(); //页面可视化区域高度

 if (Math.ceil(wh+c)>=h){
  alert("我已经到底部啦");
 }
 })

如果需要判断用户是否已经浏览到某个元素的话,那么只需要把上面的网页文档高度,换成某一个元素距离网页顶部的距离就可以了。例如: 

$(window).scroll(function(){
 var h=$("#div").offset().top;//id为div的元素距离网页顶部的距离
 var c = $(document).scrollTop();//滚动条距离网页顶部的高度
 var wh = $(window).height(); //页面可视化区域高度

 if (Math.ceil(wh+c)>=h){
  alert("我已经到底部啦");
 }
 })

在这里读者需要注意,判断条件中,wh+c取得是满足大于等于该数字的最小整数。经过笔者的测试,在IE7、8、9、11上都没有问题。

接下来笔者把上面的代码封装为一个插件。

(function ($) {
  //backcall是回调函数,count表示回调函数被执行的次数,count只有在元素通过滚动条滑出的时候才起作用
 $.fn.inBottom = function (backcall){
 //判断当前元素是否在目前屏幕可视化区域之内
 if(this.offset().top >= $(window).height()){
 this.inScroll(backcall,count);
 }else{
 this.inWindow(backcall);
 }
 };
 //直接加载回调函数
 $.fn.inWindow = function (backcall){
 backcall();
 };
 //滚动监听滑动条,元素滚动到屏幕底部的时候,加载回调函数
 $.fn.inScroll = function (backcall,count) {
  var $this=this;
 $(window).scroll(function(){
 //获得这个元素到文档顶部的距离
 var awayDocTop=$this.offset().top;
 //获得滚动条的top
 var sTop=$(document).scrollTop();
 //获得可视化窗口的高度
 var wh=$(window).height();
  if(Math.ceil(wh+sTop)>=awayDocTop){
  if(count>0){
  backcall();
  count--;
  }
 };
 });
 };
})(jQuery);

然后读者在引入上面的插件文件后,就可以通过类似于下面的代码调用了。

$("#div").inBottom(function(){
 alert("我被回调了");
},1);

总结

以上所述是小编给大家介绍的jQuery判断网页是否已经滚动到浏览器底部的实现方法,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

jQuery 相关文章推荐
jquery实现图片平滑滚动详解
Mar 22 jQuery
jQuery编写textarea输入字数限制代码
Mar 23 jQuery
jquery submit()不能提交表单的解决方法
Apr 24 jQuery
JavaScript之事件委托实例(附原生js和jQuery代码)
Jul 22 jQuery
jQuery DOM节点的遍历方法小结
Aug 15 jQuery
jquery ajax异步提交表单数据的方法
Oct 27 jQuery
springmvc接收jquery提交的数组数据代码分享
Oct 28 jQuery
JS/jQuery实现DIV延时几秒后消失或显示的方法
Feb 12 jQuery
jQuery超简单遮罩层实现方法示例
Sep 06 jQuery
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
jquery选择器和属性对象的操作实例分析
Jan 10 jQuery
jQuery实现简单评论功能
Aug 19 jQuery
JavaScript自执行函数和jQuery扩展方法详解
Oct 27 #jQuery
jquery使用iscorll实现上拉、下拉加载刷新
Oct 26 #jQuery
使用JQuery实现图片轮播效果的实例(推荐)
Oct 24 #jQuery
jquery select插件异步实时搜索实例代码
Oct 20 #jQuery
利用jQuery实现简单的拖曳效果实例代码
Oct 20 #jQuery
jQuery访问浏览器本地存储cookie、localStorage和sessionStorage的基本用法
Oct 20 #jQuery
jQuery实现打开网页自动弹出遮罩层或点击弹出遮罩层功能示例
Oct 19 #jQuery
You might like
探讨PHP中OO之静态关键字以及类常量的详解
2013/06/07 PHP
Yii2中Restful API原理实例分析
2016/07/25 PHP
php操纵mysqli数据库的实现方法
2016/09/18 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
javascript下判断一个元素是否存在的代码
2010/03/05 Javascript
学习并汇集javascript匿名函数
2010/11/25 Javascript
jQuery滚动加载图片效果的实现
2013/03/06 Javascript
浅析Node在构建超媒体API中的作用
2014/07/30 Javascript
详解JavaScript对Date对象的操作问题(生成一个倒数7天的数组)
2015/10/01 Javascript
浅谈JavaScript 函数参数传递到底是值传递还是引用传递
2016/08/23 Javascript
jQuery插件Echarts实现的渐变色柱状图
2017/03/23 jQuery
利用webstrom调试Vue.js单页面程序的方法教程
2017/06/06 Javascript
JS中跳出循环的示例代码
2017/09/14 Javascript
BootStrap点击保存后实现模态框自动关闭的思路(模态框)
2017/09/26 Javascript
Vue中对拿到的数据进行A-Z排序的实例
2018/09/25 Javascript
简单了解TypeScript中如何继承 Error 类
2019/06/21 Javascript
vue中获取滚动table的可视页面宽度调整表头与列对齐(每列宽度不都相同)
2019/08/17 Javascript
javascript实现贪吃蛇游戏(娱乐版)
2020/08/17 Javascript
js实现日历
2020/11/07 Javascript
[48:37]EG vs OG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/18 DOTA
解决python os.mkdir创建目录失败的问题
2018/10/16 Python
Python中的引用知识点总结
2019/05/20 Python
详解Pandas之容易让人混淆的行选择和列选择
2019/07/10 Python
css3实现简单的白云飘动背景特效
2020/10/28 HTML / CSS
新加坡交友网站:be2新加坡
2019/04/10 全球购物
Wilson体育用品官网:美国著名运动器材品牌
2019/05/12 全球购物
法律专业自我鉴定
2013/10/03 职场文书
员工自我鉴定范文
2013/10/06 职场文书
酒店辞职书范文
2015/02/26 职场文书
家装业务员岗位职责
2015/04/03 职场文书
总经理司机岗位职责
2015/04/10 职场文书
从严治党主题教育活动总结
2015/05/07 职场文书
2015年学校政教处工作总结
2015/05/26 职场文书
创业计划书之面包店
2019/09/12 职场文书
spring 项目实现限流方法示例
2022/07/15 Java/Android
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript