javascript监听事件之监听页面滚动的内容解析

本篇文章给大家带来的内容是关于javascript监听事件之监听页面滚动的内容解析,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

监听事件

代码

function pageChange () {    // ... 页面滚动时,需要做的事情}window.addEventListener("scroll" , pageChange, false);

登录后复制

知识点

1、使用 window.addEventListener 和 document.addEventListener 来处理页面上的事件,区别仅仅在于:不同事件模型上,处理的顺序不一样。

捕获,window 先于 document

立即学习“Java免费学习笔记(深入)”;

冒泡,document 先于 window

2、参数
addEventListener(type:String, listener:Function, useCapture:Boolean = false, priority:int = 0, useWeakReference:Boolean = false)

1) type: String  事件的类型

2) listener: Function 侦听到事件后处理事件的函数

3) useCapture: Boolean(default = false)
这里牵扯到“事件流”的概念。
侦听器在侦听时有三个阶段:捕获阶段、目标阶段和冒泡阶段。
顺序 为:捕获阶段(根节点到子节点检查是否调用了监听函数)→

           目标阶段(目标本身)→
           冒泡阶段(目标本身到根节点)。

此处的参数确定侦听器是运行于捕获阶段、 目标阶段还是冒泡阶段。
如果将 useCapture 设置为 true,则侦听器只在捕获阶段处理事件,而不在目标或冒泡阶段处理事件。 如果useCapture 为 false,则侦听器只在目标或冒泡阶段处理事件。

要在所有三个阶段都侦听事件,请调用两次 addEventListener,一次将 useCapture 设置为 true,第二次再将useCapture 设置为 false。

4) priority: int (default = 0)
事件侦听器的优先级。
优先级由一个带符号的 32 位整数指定。
数字越大,优先级越高。
优先级为 n 的所有侦听器会在优先级为 n -1 的侦听器之前得到处理。 如果两个或更多个侦听器共享相同的优先级,则按照它们的添加顺序进行处理。
默认优先级为 0。

5) useWeakReference:Boolean (default = false)   
确定对侦听器的引用是强引用,还是弱引用。
强引用(默认值)可防止您的侦听器被当作垃圾回收。 弱引用则没有此作用。

获取页面滚动高度

代码

function getScrollTop() {    return window.pageYOffset         || document.documentElement.scrollTop          || document.body.scrollTop          || 0;}

登录后复制

浏览器兼容性

谷歌 火狐 IE 360 Microsoft Edge

window.pageYOffsetYesYesYesYesYesdocument.documentElement.scrollTopYesYesYesYesNodocument.body.scrollTopNoNoNoNoYes

其中,pageYOffset 属性返回文档在窗口左上角垂直方向滚动的像素

让页面滚动至指定位置

代码

/* 滚动动画   s: 当前页面滚动高度   sTop: 指定位置滚动高度 */function tabAnimation(s, sTop) {    var type = s  sTop) || (!type && s < sTop)) {            // $el.scrollTop = sTop;            window.scrollTo(0, sTop);         } else {            // $el.scrollTop = s;            window.scrollTo(0, s);           timmer = requestAnimationFrame(fn);        }    });}

登录后复制

说明

window.requestAnimationFrame() 方法告诉浏览器您希望执行动画并请求浏览器在下一次重绘之前调用指定的函数来更新动画。该方法使用一个回调函数作为参数,这个回调函数会在浏览器重绘之前调用。

当你需要更新屏幕画面时就可以调用此方法。在浏览器下次重绘前执行回调函数。回调的次数通常是每秒60次,但大多数浏览器通常匹配 W3C 所建议的刷新频率。

在大多数浏览器里,当运行在后台标签页或者隐藏的

原生方法实现 addClass、removeClass 和 hasClass

function hasClass( elements, cName ) {   return !!elements.className.match( new RegExp( "(\s|^)" + cName + "(\s|$)") )}function addClass( elements, cName ) {   if( !hasClass( elements,cName ) ) {     elements.className += " " + cName;   }}function removeClass( elements, cName ){   if( hasClass( elements,cName ) ){     elements.className = elements.className.replace( new RegExp( "(\s|^)" + cName + "(\s|$)" ), " " );  }}

登录后复制

以上就是javascript监听事件之监听页面滚动的内容解析的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2738413.html

(0)
上一篇 2025年3月8日 01:50:11
下一篇 2025年3月8日 01:50:19

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue组件之间相互传递数据的实现方法(代码)

    本篇文章给大家带来的内容是关于php协成实现的详解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 1、子组件给父组件传递数据 父组件:{{total}} Vue.component(‘son-component’…

    编程技术 2025年3月8日
    000
  • javascript实现多个任务一次下载的方法介绍

    本篇文章给大家带来的内容是关于php协成实现的详解(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 真实经历 最近开发项目需要做文件下载,想想挺简单的,之前也做过,后台提供下载接口,前端使用window.locat…

    编程技术 2025年3月8日
    200
  • React路由懒加载实现的另种方案(代码)

    本篇文章给大家带来的内容是关于react路由懒加载实现的另种方案(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 这篇文字简单的介绍了React在路由懒加载方面的几种实现方案。 传统的两种方式 import() 符合…

    编程技术 2025年3月8日
    200
  • JS的组合继承是什么?js组合继承的介绍

    本篇文章给大家带来的内容是关于js的组合继承是什么?js组合继承的介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 组合继承(Combination Inheritance) 组合继承(Combination Inher…

    编程技术 2025年3月8日
    200
  • javascript借用构造函数的解析(附示例)

    本篇文章给大家带来的内容是关于javascript借用构造函数的解析(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 借用构造函数 为了解决原型中包含引用类型值所带来问题,开发人员开始使用一种叫做借用构造函数(co…

    编程技术 2025年3月8日
    200
  • js运算符有哪些?js运算符的详细介绍

    本篇文章给大家带来的内容是关于js运算符有哪些?js运算符的详细介绍,有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 javascript 基础运算符分为:算术运算符、赋值运算符、关系运算符、逻辑运算符;接下来详细讲解着几种…

    编程技术 2025年3月8日
    200
  • React渲染列表的方法介绍(附代码)

    本篇文章给大家带来的内容是关于react渲染列表的方法介绍(附代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 对于一个展示页面来讲, 通常有好几种展示状态(以列表页为例): 数据为空, 空页面取数据时发生错误, 错误…

    编程技术 2025年3月8日
    200
  • javascript递归函数的详解(附示例)

    本篇文章给大家带来的内容是关于javascript递归函数的详解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 递归函数看过很多次,但是感觉一直都没有完全的理解,这次有空看了下>,又静下心来重新看了一遍递归…

    编程技术 2025年3月8日
    200
  • Node Stream的运行机制讲解(附示例)

    本篇文章给大家带来的内容是关于node stream的运行机制讲解(附示例),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 如果你正在学习Node,那么流一定是一个你需要掌握的概念。如果你想成为一个Node高手,那么流一定…

    2025年3月8日 编程技术
    200
  • 如何使用el-checkbox实现全选(代码)

    本篇文章给大家带来的内容是关于使用el-checkbox实现全选(代码),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。 最近在公司接收到了一个需求,给收藏夹的书籍添加批量、全选删除实现思路:点击全选改变item的check…

    编程技术 2025年3月8日
    200

发表回复

登录后才能评论