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 Masonry瀑布流布局神器使用详解
May 25 jQuery
jquery实现一个全局计时器(商城可用)
Jun 30 jQuery
jQuery 实时保存页面动态添加的数据的示例
Aug 14 jQuery
jQuery菜单实例(全选,反选,取消)
Aug 28 jQuery
jQuery选择器之属性过滤选择器详解
Sep 28 jQuery
jQuery实现动态添加节点与遍历节点功能示例
Nov 09 jQuery
jQuery Datatables表头不对齐的解决办法
Nov 27 jQuery
jQuery代码优化方法总结
Jan 29 jQuery
jQuery简单判断值是否存在于数组中的方法示例
Apr 17 jQuery
jQuery length 和 size()区别总结
Apr 26 jQuery
jQuery基于Ajax实现读取XML数据功能示例
May 31 jQuery
jquery实现鼠标悬浮弹出气泡提示框
Dec 23 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
域名查询代码公布
2006/10/09 PHP
thinkphp配置连接数据库技巧
2014/12/02 PHP
Yii使用DeleteAll连表删除出现报错问题的解决方法
2016/07/14 PHP
PHP使用curl_multi_select解决curl_multi网页假死问题的方法
2018/08/15 PHP
PHP实现文件上传与下载
2020/08/28 PHP
JavaScript获得选中文本内容的方法
2008/12/02 Javascript
自动完成JS类(纯JS, Ajax模式)
2009/03/12 Javascript
JS类的封装及实现代码
2009/12/02 Javascript
类似php的js数组的in_array函数自定义方法
2013/12/27 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
2014/06/09 Javascript
原生Js实现简易烟花爆炸效果的方法
2015/03/20 Javascript
浅谈jQuery页面的滚动位置scrollTop、scrollLeft
2015/05/19 Javascript
jquery实现的回旋滚动效果完整实例【附demo源码下载】
2016/09/20 Javascript
BootStrap便签页的简单应用
2017/01/06 Javascript
AngularJS 文件上传控件 ng-file-upload详解
2017/01/13 Javascript
ReactJs设置css样式的方法
2017/06/08 Javascript
webpack学习--webpack经典7分钟入门教程
2017/06/28 Javascript
详解vue静态资源打包中的坑与解决方案
2018/02/05 Javascript
小程序转发探索示例
2019/02/19 Javascript
JS匿名函数内部this指向问题详析
2019/05/10 Javascript
python在windows命令行下输出彩色文字的方法
2015/03/19 Python
python从sqlite读取并显示数据的方法
2015/05/08 Python
Python Requests库基本用法示例
2018/08/20 Python
利用Python如何实现一个小说网站雏形
2018/11/23 Python
Python获取时间范围内日期列表和周列表的函数
2019/08/05 Python
PyCharm导入python项目并配置虚拟环境的教程详解
2019/10/13 Python
python元组的概念知识点
2019/11/19 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
2021/01/29 Python
园林设计师自荐信
2013/11/18 职场文书
父亲的菜园教学反思
2014/02/13 职场文书
社区巾帼文明岗事迹材料
2014/06/03 职场文书
小学教师个人工作总结2015
2015/04/20 职场文书
观后感的写法
2015/06/19 职场文书
浅谈克隆 JavaScript
2021/11/02 Javascript
CSS font-variation 可变字体的魅力(实例详解)
2022/03/03 HTML / CSS