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中hover方法搭配css的hover选择器,实现选中元素突出显示方法
May 08 jQuery
jQuery复合事件结合toggle()方法的用法示例
Jun 10 jQuery
jQuery实现表格冻结顶栏效果
Aug 20 jQuery
jQuery实现浏览器之间跳转并传递参数功能【支持中文字符】
Mar 28 jQuery
jQuery使用bind动态绑定事件无效的处理方法
Dec 11 jQuery
jQuery简单实现根据日期计算星期几的方法
Jan 09 jQuery
JQuery判断radio单选框是否选中并获取值的方法
Jan 17 jQuery
jquery层次选择器的介绍
Jan 18 jQuery
jquery 插件重新绑定的处理方法分析
Nov 23 jQuery
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
jQuery三组基本动画与自定义动画操作实例总结
May 09 jQuery
深入分析jQuery.one() 函数
Jun 03 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中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
php 无限分类 树形数据格式化代码
2016/10/11 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
IE浏览器PNG图片透明效果代码
2008/09/02 Javascript
XMLHTTPRequest的属性和方法简介
2010/11/23 Javascript
精通Javascript系列之数值计算
2011/06/07 Javascript
Javascript和Java获取各种form表单信息的简单实例
2014/02/14 Javascript
脚本合并提升javascript性能示例
2014/02/24 Javascript
js解决select下拉选不中问题
2014/10/14 Javascript
jQuery源码分析之Callbacks详解
2015/03/13 Javascript
jquery实现列表上下移动功能
2016/02/25 Javascript
node.js 中国天气预报 简单实现
2016/06/06 Javascript
微信小程序-图片、录音、音频播放、音乐播放、视频、文件代码实例
2016/11/22 Javascript
微信小程序 跳转传递数据的实例
2017/07/06 Javascript
用js简单提供增删改查接口
2019/05/12 Javascript
[35:44]2014 DOTA2华西杯精英邀请赛 5 24 iG VS VG
2014/05/26 DOTA
[02:16]2018年度CS GO最具人气选手-完美盛典
2018/12/16 DOTA
Python中下划线的使用方法
2015/03/27 Python
Python中的面向对象编程详解(上)
2015/04/13 Python
python实现的jpg格式图片修复代码
2015/04/21 Python
python使用matplotlib绘制折线图教程
2017/02/08 Python
Django项目中包含多个应用时对url的配置方法
2018/05/30 Python
基于pip install django失败时的解决方法
2018/06/12 Python
在python中安装basemap的教程
2018/09/20 Python
Windows10下 python3.7 安装 facenet的教程
2019/09/10 Python
python hash每次调用结果不同的原因
2019/11/21 Python
详解HTML5中垂直上下居中的解决方案
2017/12/20 HTML / CSS
英国领先的票务代理商之一:The Ticket Factory
2019/02/09 全球购物
Python如何实现单例模式
2016/06/03 面试题
创立科技Java面试题
2015/11/29 面试题
运动会稿件50字
2014/02/17 职场文书
益达广告词
2014/03/14 职场文书
教师年终个人总结
2015/02/11 职场文书
运动会闭幕式主持词
2015/07/01 职场文书
Java spring定时任务详解
2021/10/05 Java/Android
V Rising 服务器搭建图文教程
2022/06/16 Servers