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树插件zTree使用方法详解
May 02 jQuery
jquery仿微信聊天界面
May 06 jQuery
jQuery 实现鼠标画框并对框内数据选中的实例代码
Aug 29 jQuery
jQuery实现的页面遮罩层功能示例【测试可用】
Oct 14 jQuery
HTML5+JS+JQuery+ECharts实现异步加载问题
Dec 16 jQuery
jquery+ajaxform+springboot控件实现数据更新功能
Jan 22 jQuery
如何用input标签和jquery实现多图片的上传和回显功能
May 16 jQuery
jQuery实现的点击显示隐藏下拉菜单功能完整示例
May 17 jQuery
jQuery中使用validate插件校验表单功能
May 24 jQuery
jquery 回调操作实例分析【回调成功与回调失败的情况】
Sep 27 jQuery
jQuery实现消息弹出框效果
Dec 10 jQuery
jQuery实现移动端扭蛋机抽奖
Nov 08 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文件目录基础操作
2014/11/11 PHP
PHP基于文件存储实现缓存的方法
2015/07/20 PHP
PHP控制反转(IOC)和依赖注入(DI)
2017/03/13 PHP
laravel框架中表单请求类型和CSRF防护实例分析
2019/11/23 PHP
获取div编辑框,textarea,input text的光标位置 兼容IE,FF和Chrome的方法介绍
2012/11/08 Javascript
ionic js 模型 $ionicModal 可以遮住用户主界面的内容框
2016/06/06 Javascript
jQuery使用each方法与for语句遍历数组示例
2016/06/16 Javascript
实现React单页应用的方法详解
2016/08/02 Javascript
详解Vue 动态添加模板的几种方法
2017/04/25 Javascript
JavaScript基本语法_动力节点Java学院整理
2017/06/26 Javascript
js 发布订阅模式的实例讲解
2017/09/10 Javascript
基于JavaScript 性能优化技巧心得(分享)
2017/12/11 Javascript
JS内部事件机制之单线程原理
2018/07/02 Javascript
node全局变量__dirname与__filename的区别
2019/01/14 Javascript
微信小程序实现点击卡片 翻转效果
2019/09/04 Javascript
微信小程序可滑动周日历组件使用详解
2019/10/21 Javascript
vue中根据时间戳判断对应的时间(今天 昨天 前天)
2019/12/20 Javascript
JavaScript鼠标拖拽事件详解
2020/04/03 Javascript
vue修改Element的el-table样式的4种方法
2020/09/17 Javascript
[13:16]INFAMOUS vs VGJ T BO3
2018/06/07 DOTA
比较详细Python正则表达式操作指南(re使用)
2008/09/06 Python
python3.3教程之模拟百度登陆代码分享
2014/01/16 Python
python命令行参数sys.argv使用示例
2014/01/28 Python
python 截取 取出一部分的字符串方法
2017/03/01 Python
Django rest framework实现分页的示例
2018/05/24 Python
python导入模块交叉引用的方法
2019/01/19 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
查看jupyter notebook每个单元格运行时间实例
2020/04/22 Python
英国钻石公司:British Diamond Company
2020/02/16 全球购物
护理专业毕业生推荐信
2013/10/31 职场文书
母亲80寿诞答谢词
2014/01/16 职场文书
中班下学期个人总结
2015/02/12 职场文书
2015年招生工作总结
2015/05/04 职场文书
原告离婚代理词
2015/05/23 职场文书
百家讲坛观后感
2015/06/12 职场文书
MySQL基础快速入门知识总结(附思维导图)
2021/09/25 MySQL