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实现瀑布流页面
Apr 11 jQuery
jquery实现提示语淡入效果
May 05 jQuery
jQuery导航条固定定位效果实例代码
May 26 jQuery
jQuery 实现双击编辑表格功能
Jun 19 jQuery
jQuery开源组件BootstrapValidator使用详解
Jun 29 jQuery
使用jQuery实现页面定时弹出广告效果
Aug 24 jQuery
基于jQuery使用Ajax动态执行模糊查询功能
Jul 05 jQuery
jQuery控制input只能输入数字和两位小数的方法
May 16 jQuery
jQuery实现高级检索功能
May 28 jQuery
基于jquery实现的tab选项卡功能示例【附源码下载】
Jun 10 jQuery
jquery实现弹窗(系统提示框)效果
Dec 10 jQuery
jQuery实现可以扩展的日历
Dec 01 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图片上传存储源码并且可以预览
2011/08/26 PHP
php中判断数组相等的方法以及数组运算符介绍
2015/03/30 PHP
php中PDO方式实现数据库的增删改查
2015/05/17 PHP
PHP封装的Twitter访问类实例
2015/07/18 PHP
php简单实现多语言切换的方法
2016/05/09 PHP
jquery下实现overlay遮罩层代码
2010/08/25 Javascript
CSS+jQuery实现的一个放大缩小动画效果
2013/09/24 Javascript
javascript实现十六进制颜色值(HEX)和RGB格式相互转换
2014/06/20 Javascript
探讨js字符串数组拼接的性能问题
2014/10/11 Javascript
javascript计时器详解
2015/02/28 Javascript
基于Turn.js 实现翻书效果实例解析
2016/06/20 Javascript
Javascript使用uploadify来实现多文件上传
2016/11/16 Javascript
webpack构建换肤功能的思路详解
2017/11/27 Javascript
vue ssr 实现方式(学习笔记)
2019/01/18 Javascript
详解element-ui中form验证杂记
2019/03/04 Javascript
详解Vuex下Store的模块化拆分实践
2019/07/31 Javascript
Vue常用传值方式、父传子、子传父及非父子实例分析
2020/02/24 Javascript
python开发之for循环操作实例详解
2015/11/12 Python
关于pip的安装,更新,卸载模块以及使用方法(详解)
2017/05/19 Python
python实现稀疏矩阵示例代码
2017/06/09 Python
在python2.7中用numpy.reshape 对图像进行切割的方法
2018/12/05 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
python 实现return返回多个值
2019/11/19 Python
python的range和linspace使用详解
2019/11/27 Python
python matplotlib:plt.scatter() 大小和颜色参数详解
2020/04/14 Python
5行Python代码实现图像分割的步骤详解
2020/05/25 Python
手把手教你将Flask应用封装成Docker服务的实现
2020/08/19 Python
美国二手复古奢侈品包包购物网站:LXRandCo
2019/06/18 全球购物
Bath & Body Works阿联酋:在线购买沐浴和身体用品
2021/02/27 全球购物
国际贸易个人求职信范文
2014/01/04 职场文书
优秀幼教自荐信
2014/02/03 职场文书
大学生上课迟到检讨书
2014/10/15 职场文书
2014年工作总结及2015工作计划
2014/12/12 职场文书
幼儿园安全管理制度
2015/08/05 职场文书
CSS 文字装饰 text-decoration & text-emphasis 详解
2021/04/06 HTML / CSS
pandas取dataframe特定行列的实现方法
2021/05/24 Python