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 24 jQuery
Jquery-data的三种用法
Apr 18 jQuery
jQuery Masonry瀑布流布局神器使用详解
May 25 jQuery
jQuery实现上传图片前预览效果功能
Aug 03 jQuery
jQuery判断网页是否已经滚动到浏览器底部的实现方法
Oct 27 jQuery
jQuery图片加载失败替换默认图片方法汇总
Nov 29 jQuery
jQuery实现鼠标点击处心形漂浮的炫酷效果示例
Apr 12 jQuery
jQuery实现炫丽的3d旋转星空效果
Jul 04 jQuery
jQuery实现的别踩白块小游戏完整示例
Jan 07 jQuery
JS/jQuery实现超简单的Table表格添加,删除行功能示例
Jul 31 jQuery
JQuery表单元素取值赋值方法总结
May 12 jQuery
使用jquery实现轮播图效果
Jan 02 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之第三天
2006/10/09 PHP
php实现jQuery扩展函数
2009/10/30 PHP
PHP在获取指定目录下的目录,在获取的目录下面再创建文件,多平台
2011/08/03 PHP
PHP PDOStatement:bindParam插入数据错误问题分析
2013/11/13 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP实现广度优先搜索算法(BFS,Broad First Search)详解
2017/09/16 PHP
PHP文件系统管理(实例讲解)
2017/09/19 PHP
基于jquery的放大镜效果
2012/05/30 Javascript
jQuery插件MixItUp实现动画过滤和排序
2015/04/12 Javascript
uploadify多文件上传参数设置技巧
2015/11/16 Javascript
将List对象列表转换成JSON格式的类实现方法
2016/07/04 Javascript
解决vue-cli 打包后自定义动画未执行的问题
2019/11/12 Javascript
Vue向后台传数组数据,springboot接收vue传的数组数据实例
2020/11/12 Javascript
Vue实现图书管理案例
2021/01/20 Vue.js
[44:40]Spirit vs Navi Supermajor小组赛 A组败者组第一轮 BO3 第一场 6.2
2018/06/03 DOTA
使用PyInstaller将Python程序文件转换为可执行程序文件
2016/07/08 Python
Python变量和数据类型详解
2017/02/15 Python
详解Python函数可变参数定义及其参数传递方式
2017/08/02 Python
谈谈python中GUI的选择
2018/03/01 Python
pytorch多进程加速及代码优化方法
2019/08/19 Python
python 图像处理画一个正弦函数代码实例
2019/09/10 Python
Python aiohttp百万并发极限测试实例分析
2019/10/26 Python
Python使用Pygame绘制时钟
2020/11/29 Python
python常量折叠基础知识点讲解
2021/02/28 Python
Canal官网:巴西女性时尚品牌
2019/10/16 全球购物
中级会计职业生涯规划范文
2014/01/16 职场文书
不打扫卫生检讨书
2014/02/12 职场文书
后勤主管岗位职责
2014/03/01 职场文书
经典演讲稿汇总
2014/05/19 职场文书
三八红旗集体先进事迹材料
2014/05/22 职场文书
旅游与环境专业求职信
2014/06/05 职场文书
教育专业毕业生推荐信
2014/07/10 职场文书
村党支部书记个人对照材料汇报
2014/10/26 职场文书
出国留学英文自荐信
2015/03/25 职场文书
2016国培研修心得体会
2016/01/08 职场文书
浅谈redis缓存在项目中的使用
2021/05/20 Redis