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的表单填充实例
Aug 22 jQuery
jquery select插件异步实时搜索实例代码
Oct 20 jQuery
jQuery实现遍历XML节点和属性的方法示例
Apr 29 jQuery
jQuery实现数字自动增加或者减少的动画效果示例
Dec 11 jQuery
jquery实现二级导航下拉菜单效果实例
May 14 jQuery
jquery获取并修改触发事件的DOM元素示例【基于target 属性】
Oct 10 jQuery
jquery实现直播视频弹幕效果
Feb 25 jQuery
jquery css实现流程进度条
Mar 26 jQuery
JavaScript或jQuery 获取option value值方法解析
May 12 jQuery
JQuery事件冒泡和默认行为代码实例
May 13 jQuery
jQuery 选择方法及$(this)用法实例分析
May 19 jQuery
JQuery绑定事件四种实现方法解析
Dec 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
东芝TOSHIBA RP-F11电路分析
2021/03/02 无线电
PHP 验证码的实现代码
2011/07/17 PHP
探讨php中header的用法详解
2013/06/07 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(六)
2014/06/23 PHP
JavaScript中null与undefined分析
2009/07/25 Javascript
jquery ajax 登录验证实现代码
2009/09/23 Javascript
JavaScript中各种编码解码函数的区别和注意事项
2010/08/19 Javascript
Javascript base64编码实现代码
2011/12/02 Javascript
js渐变显示渐变消失示例代码
2013/08/01 Javascript
JavaScript 语言基础知识点总结(思维导图)
2013/11/10 Javascript
将中国标准时间转换成标准格式的代码
2014/03/20 Javascript
JS组件Bootstrap按钮组与下拉按钮详解
2016/05/10 Javascript
JavaScript类型系统之布尔Boolean类型详解
2016/06/26 Javascript
最丑的时钟效果!js canvas时钟制作方法
2016/08/15 Javascript
jquery配合.NET实现点击指定绑定数据并且能够一键下载
2016/10/28 Javascript
SVG描边动画
2017/02/23 Javascript
关于express与koa的使用对比详解
2018/01/25 Javascript
vue 子组件向父组件传值方法
2018/02/26 Javascript
JS实现用特殊符号替换字符串的中间部分区域的实例代码
2018/07/24 Javascript
webpack4+react多页面架构的实现
2018/10/25 Javascript
NodeJs 文件系统操作模块fs使用方法详解
2018/11/26 NodeJs
Bootstrap Paginator+PageHelper实现分页效果
2018/12/29 Javascript
Django与JS交互的示例代码
2017/08/23 Python
Python内置加密模块用法解析
2019/11/25 Python
在tensorflow中实现去除不足一个batch的数据
2020/01/20 Python
CSS3 制作旋转的大风车(充满童年回忆)
2013/01/30 HTML / CSS
纯CSS3+DIV实现小三角形边框效果的示例代码
2020/08/03 HTML / CSS
软件配置管理有什么好处
2015/04/15 面试题
企业军训感言
2014/02/08 职场文书
巾帼建功标兵事迹材料
2014/05/11 职场文书
希特勒经典演讲稿
2014/05/19 职场文书
酒店员工培训方案
2014/06/02 职场文书
学习十八大的心得体会
2014/09/01 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
婚礼迎宾词大全
2015/08/10 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis