返回顶部
首页 > 资讯 > 前端开发 > JavaScript >超实用的全新JavaScript事件Scrollend实例详解
  • 542
分享到

超实用的全新JavaScript事件Scrollend实例详解

JavaScriptScrollend事件JavaScriptScrollend 2023-01-29 15:01:36 542人浏览 独家记忆
摘要

目录概述使用浏览器支持概述 在开发中,可能会遇到当页面滚动停止之后执行某些操作的需求。在 scrollend 事件之前,并没有可靠的方法来检测页面滚动是否完成。这意味着事件会延迟触

概述

开发中,可能会遇到当页面滚动停止之后执行某些操作的需求。在 scrollend 事件之前,并没有可靠的方法来检测页面滚动是否完成。这意味着事件会延迟触发,或者当用户的手指仍在屏幕上时触发。这种不可靠性导致了错误和用户体验不佳。

以前可能会使用定时器来检测滚动停止

document.onscroll = event => {
  clearTimeout(window.scrollEndTimer)
  window.scrollEndTimer = setTimeout(callback, 100)
}

这个 setTimeout() 可以知道滚动是否停止了 100 毫秒。这使它更像是滚动已暂停事件,而不是滚动已结束事件。

有了 scrollend 事件,浏览器就会帮我们完成滚动停止的监听:

document.onscrollend = event => {…}

可以在 Codepen 查看示例:codepen.io/WEB-dot-dev…,当滚动停止时会有提示。核心代码如下:

document.onscrollend = event => {
  Toast('scroll end')
}

使用

scrollend 事件会在以下情况被触发:

  • 用户的触摸已被释放;
  • 用户的指针已释放滚动条;
  • 用户的按键已被释放;
  • 滚动到片段已完成;
  • 滚动捕捉已完成;
  • scrollTo()已完成;
  • 用户已滚动视觉视口。

scrollend 事件在以下情况不会触发:

  • 用户的手势没有导致任何滚动位置变化;
  • scrollTo() 没有产生任何移动。

这个事件花了很长时间才出现在 Web 平台上的一个原因就是有许多小细节需要进行规范。最复杂的就是视觉视口与文档的滚动结束细节。对于放大的网页,在此缩放状态下,可以四处滚动,但不一定是在滚动文档。不过,即使是这个视觉视口用户驱动的滚动交互也会在完成后发出 scrollend 事件。

与其他滚动事件一样,可以通过多种方式注册侦 听 器:

addEventListener("scrollend", (event) => {
  // scroll ended
});
aScrollingElement.addEventListener("scrollend", (event) => {
  // scroll ended
});

也可以使用事件属性:

document.onscrollend = (event) => {
  // scroll ended
};
aScrollingElement.onscrollend = (event) => {
  // scroll ended
};

浏览器支持

目前仅 Firefox 109 版本支持 scrollend 事件。不久的将来,Chrome 111 版本也将支持该事件。

如果现在想要使用这个事件,可以在开始时检查支持情况,如果不支持该事件就继续使用当前的滚动结束策略(如果有的话):

if ('onscrollend' in window) {
  document.onscrollend = callback
}
else {
  document.onscroll = event => {
    clearTimeout(window.scrollEndTimer)
    window.scrollEndTimer = setTimeout(callback, 100)
  }
}

这样就能在可用时渐进增强 scrollend 事件。当然也可以使用 polyfill:GitHub.com/argyleink/s…

首先在终端中安装npm包:

npm i -D scrollyfills

然后在要的地方使用 scrollend 事件:

import {scrollend} from 'scrollyfills';
someElementThatScrolls.addEventListener('scrollend', event => {
  console.log('scroll has ended');
});

polyfill 将渐进增强以使用浏览器内置的 scrollend 事件(如果可用)。 如果它不可用,脚本会监视指针事件并滚动以对它可能结束的事件进行最佳评估。

参考:developer.chrome.com/blog/scroll…

以上就是超实用的全新javascript事件Scrollend实例详解的详细内容,更多关于JavaScript Scrollend事件的资料请关注编程网其它相关文章!

--结束END--

本文标题: 超实用的全新JavaScript事件Scrollend实例详解

本文链接: https://lsjlt.com/news/178635.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 超实用的全新JavaScript事件Scrollend实例详解
    目录概述使用浏览器支持概述 在开发中,可能会遇到当页面滚动停止之后执行某些操作的需求。在 scrollend 事件之前,并没有可靠的方法来检测页面滚动是否完成。这意味着事件会延迟触...
    99+
    2023-01-29
    JavaScript Scrollend事件 JavaScript Scrollend
  • JavaScript WebAPI、DOM、事件和操作元素实例详解
    目录WebAPIDOMDOM树DOM获取元素方式document对象属性事件事件的使用步骤事件的类型操作元素操作元素内容操作元素属性操作元素样式排他思想H5自定义属性总结WebAPI...
    99+
    2024-04-02
  • vue3响应式对象的api超全实例详解
    目录Ⅰ. ref、reactive ( 递归监听 )Ⅱ. isRef、isReactive ( 判断 )Ⅲ. toRef 和 toRefs ( 解构 )Ⅳ. toRaw 、 mark...
    99+
    2023-05-19
    vue3响应式对象api vue中api vue 响应式
  • JavaScript DOM常用事件实例分析
    本篇内容介绍了“JavaScript DOM常用事件实例分析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2024-04-02
  • JavaScript中事件委托的示例详解
    目录事件流事件委托结尾大家好,我是前端西瓜哥。今天我们来认识一下事件委托。 所谓事件委托,就是将原本应该在当前元素绑定的事件,放到它的祖先元素上,让祖先元素来委托处理。 事件流 事件...
    99+
    2024-04-02
  • Web漏洞-文件包含漏洞超详细全解(附实例)
    目录 一、导图 二、文件包含漏洞 1.脚本代码 2.原理演示 3.漏洞成因 4.检测方法 5.类型分类 三、本地文件包含漏洞的利用 四、远程文件包含漏洞的利用 五、协议的玩法 ​六、南邮杯CTF实例 ​七、i春秋百度杯实例 八...
    99+
    2023-08-31
    php web安全 文件包含漏洞 网络安全 后端
  • Node.js 事件循环详解及实例
    Node.js 事件循环详解及实例 Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。 Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,...
    99+
    2022-06-04
    详解 实例 事件
  • js事件流、事件委托与事件阶段实例详解
    目录前言1、事件流2、事件处理程序3、事件对象4、跨浏览器事件处理5、事件委托总结前言 JavaScript 与 HTML 的交互是通过事件实现的,事件代表文档或浏览器窗口中某个有意...
    99+
    2024-04-02
  • JavaScript的事件监听实例分析
    这篇文章主要介绍了JavaScript的事件监听实例分析的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇JavaScript的事件监听实例分析文章都会有所收获,下面我们一起来看看吧。1.什么是事件监听 ?事件监听...
    99+
    2023-06-29
  • Android recycleView的应用和点击事件实例详解
    Android recycleView的应用和点击事件 效果图: 长按是删除: 下面代码: MainActivity 类 public class MainActivit...
    99+
    2022-06-06
    事件 Android
  • JavaScript事件的委托(代理)的用法示例详解
    目录简介示例:事件委托写法1:事件委托写法2:每个子元素都绑定事件示例:新增元素写法1:事件委托写法2:每个子元素都绑定事件简介 说明 本文用示例介绍JavaScript中的事件(E...
    99+
    2024-04-02
  • vue实现全选组件封装实例详解
    效果  封装的组件 <template> <el-form-item :label="label"> <el-checkbox ...
    99+
    2024-04-02
  • JavaScript实现事件总线(Event Bus)的方法详解
    目录介绍原理分析进阶1. 如何在发送消息时传递参数2. 订阅后如何取消订阅3. 如何只订阅一次4. 如何清除某个事件或者所有事件5. TypeScript 版本6. 单例模式总结介绍...
    99+
    2024-04-02
  • 实例详解JS中的事件循环机制
    目录一、前言二、宏、微任务三、Tick 执行顺序四、案例详解1.掺杂setTimeout2.掺杂微任务,此处主要是Promise.then3.掺杂async/await一、前言 之前...
    99+
    2024-04-02
  • Android 拦截返回键事件的实例详解
    Android 拦截返回键事件的实例详解KeyEvent类Android.View.KeyEvent类中定义了一系列的常量和方法,用来描述Android中的按键事件和返回键有关的常量和方法有。 KeyEvent.KEYCODE_BACK...
    99+
    2023-05-30
    android 拦截 返回键
  • javascript 实例详解循环用法
    闲来无聊,整理了几道有关循环的简单练习题,希望对初学JS的小伙伴有所帮助。 1.打印1-100之间所有7的倍数的个数及总和 var sum=0; var n=0; for(var...
    99+
    2024-04-02
  • JavaScript实现点击关闭全屏示例详解
    目录引言思路具体实现问题升级引言 今天,我们来探讨的问题是: 当点击图片的时候,我们需要其全屏展示,当我们再次点击的时候,图片退出全屏播放。 PS: 我们退出全屏播放的情况一般是按 ...
    99+
    2024-04-02
  • JavaScript实现类似Express的中间件系统(实例详解)
    目录Express 的中间件系统实现代码如何实现异步执行链如何将控制权交给中间件函数使用示例应用级中间件与路由级中间件Express 的中间件系统 在 Express 中可以给一个请...
    99+
    2023-02-14
    js Express的中间件系统 Express的中间件
  • Android应用App更新实例详解
    前言:现在一般的Android软件都是需要不断更新的,当你打开某个app的时候,如果有新的版本,它会提示你有新版本需要更新。该项目实现的就是这个功能。并且有强制更新和更新提示两...
    99+
    2022-06-06
    app Android
  • JDK19新特性使用实例详解
    目录前提新特性列表新特性使用详解Record模式Linux/RISC-V移植外部函数和内存API虚拟线程向量APIswitch匹配模式结构化并发前提 JDK19于2022-09-20...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作