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 extend()详解及简单实例
May 06 jQuery
JQuery用$.ajax或$.getJSON跨域获取JSON数据的实现代码
Sep 23 jQuery
jQuery实现滚动到底部时自动加载更多的方法示例
Feb 18 jQuery
jQuery发请求传输中文参数乱码问题的解决方案
May 22 jQuery
jQuery实现的五星点评功能【案例】
Feb 18 jQuery
jQuery AJAX与jQuery事件的分析讲解
Feb 18 jQuery
jQuery中each和js中forEach的区别分析
Feb 27 jQuery
使用jQuery如何写一个含验证码的登录界面
May 13 jQuery
jQuery操作事件完整实例分析
Jan 10 jQuery
jQuery插件simplePagination的使用方法示例
Apr 28 jQuery
jQuery HTML获取内容和属性操作实例分析
May 20 jQuery
jQuery实现简单弹幕制作
Dec 10 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 魔术方法使用说明
2009/10/20 PHP
邮箱正则表达式实现代码(针对php)
2013/06/21 PHP
zend framework中使用memcache的方法
2016/03/04 PHP
PHP实现根据密码长度显示安全条
2017/07/04 PHP
PHP封装curl的调用接口及常用函数详解
2018/05/31 PHP
jquery 图片截取工具jquery.imagecropper.js
2010/04/09 Javascript
jQuery动画animate方法使用介绍
2013/05/06 Javascript
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
js onload事件不起作用示例分析
2013/10/09 Javascript
jQuery的$.proxy()应用示例介绍
2014/04/03 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
Vue2.0 组件传值通讯的示例代码
2017/08/01 Javascript
shiro授权的实现原理
2017/09/21 Javascript
vue element-ui之怎么封装一个自己的组件的详解
2019/05/20 Javascript
js实现贪吃蛇小游戏
2019/10/29 Javascript
JQuery中的常用事件、对象属性与使用方法分析
2019/12/23 jQuery
JS前端广告拦截实现原理解析
2020/02/17 Javascript
js判断密码强度的方法
2020/03/18 Javascript
JavaScript面向对象核心知识与概念归纳整理
2020/05/09 Javascript
vue iview实现动态新增和删除
2020/06/17 Javascript
Python实现图像几何变换
2015/07/06 Python
python根据京东商品url获取产品价格
2015/08/09 Python
MySQL适配器PyMySQL详解
2017/09/20 Python
python通过链接抓取网站详解
2019/11/20 Python
浅谈keras通过model.fit_generator训练模型(节省内存)
2020/06/17 Python
requests在python中发送请求的实例讲解
2021/02/17 Python
通过Canvas及File API缩放并上传图片完整示例
2013/08/08 HTML / CSS
blueseventy官网:铁人三项和比赛泳衣
2021/02/06 全球购物
英国最大的在线照明商店:Litecraft
2020/08/31 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
幼儿园长自我鉴定
2013/10/17 职场文书
党的群众路线教育实践活动专题组织生活会发言材料
2014/10/17 职场文书
学雷锋日活动总结
2015/02/06 职场文书
单身证明范本
2015/06/15 职场文书
岗位聘任协议书
2015/09/21 职场文书
5行Python代码实现一键批量扣图
2021/06/29 Python