【问题】

使用addEventListener监听滚动来阻止冒泡(e.preventDefault()),removeEventListener移除监听阻止冒泡(e.preventDefault()),但未生效。

错误代码示例如下:

// 在 onMounted 钩子中监听
document.body.addEventListener('touchmove', function(e) {e.preventDefault()
}, { passive: false })
// 在 onBeforeUnmount 钩子中移除监听
document.body.removeEventListener('touchmove', function(e) {e.preventDefault()
}, { passive: false })

【解决】

正确代码示例如下:

  1. 先把e.preventDefault()单独写一个方法
const noScroll = (e) => {e.preventDefault()
}
  1. 然后把noScroll方法当作addEventListener及removeEventListener的第二个参数
// 在 onMounted 钩子中监听
document.body.addEventListener('touchmove', noScroll, { passive: false })
// 在 onBeforeUnmount 钩子中移除监听
document.body.removeEventListener('touchmove', noScroll, { passive: false })

注: 第三个参数passive默认值为false,但是chrome, Firefox等浏览器为了保证滚动时的性能,在Window,、Document、 Document.body上针对 touchstart 和 touchmove 事件将passive默认值改为了true。
详细可参考:
EventTarget.addEventListener()
EventTarget.removeEventListener

【解决】addEventListener监听滚动与removeEventListener移除监听阻止冒泡(e.preventDefault())不生效相关推荐

  1. js添加事件、移除事件、阻止冒泡、阻止浏览器默认行为等写法(兼容IE/FF/CHROME) 转载...

    js添加事件.移除事件.阻止冒泡.阻止浏览器默认行为等写法(兼容IE/FF/CHROME) 网上有关这方面的代码比较多而乱,这里整理一下并加以改进. 添加事件 01    var addEvent = ...

  2. 【Flutter】监听滚动动作 控制组件 透明度渐变 ( 移除顶部状态栏空白 | 帧布局组件 | 透明度组件 | 监听滚动组件 )

    文章目录 前言 一.移除顶部状态栏空白 二.帧布局组件 三.透明度组件 四.监听滚动事件 五.完整代码示例 六.相关资源 前言 在上一篇博客 [Flutter]Banner 轮播组件 ( flutte ...

  3. js如何监听元素事件是否被移除_JS移除事件监听的方法 .removeEventListener( )

    JS用addEventListener添加事件监听方法后,可以用removeEventListener来解除监听: element.removeEventListener(event, myFunct ...

  4. vue监听滚动事件 实现某元素吸顶或者固定位置显示

    vue监听滚动事件 实现某元素吸顶或者固定位置显示 最近写了一个VUE的web app项目,需要实现某个部位吸顶的效果.即,页面往上滑动,刚好到达该部位时,该部分,固定在顶部显示. 1.监听滚动事件 ...

  5. 页面滚动到某一位置吸顶_vue监听滚动事件某元素吸顶或固定位置显示详解

    本文主要为大家详细介绍了vue实现某元素吸顶或固定位置显示,监听滚动事件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能帮助到大家. 最近写了一个VUE的web app项目,需要实现某个部位 ...

  6. 监听滚动事件 实现动态锚点

    前几天做项目的时候,需要实现一个动态锚点的效果 如果是传统项目,这个效果就非常简单.但是放到 Vue 中,就有两大难题: 1. 在没有 jQuery 的 animate() 方法的情况下,如何实现平滑 ...

  7. vue 监听滚动事件之菜单滚动吸顶点击滑动到指定位置点击高亮

    ###菜单滚动吸顶效果: ###html: <section class="switchModule" id="switchModule">< ...

  8. vue监听滚动事件,实现滚动监听

    在vue中实现滚动监听和原生js无太大差异,下面是一个简单的demo,可在控制台查看结果 <!DOCTYPE html> <html lang="en">& ...

  9. Vue 设置overflow: auto 后监听滚动距离

    overflow: auto 后监听滚动距离 <div class="page-body-inner" @scroll.passive="getScroll($ev ...

最新文章

  1. java web项目优化记录:优化考试系统
  2. 《C与指针》第四章练习
  3. java基础知识之初识java
  4. 每次执行java命令 都要source_跟着平台混了四年,现在要单飞了!
  5. spring-data-redis相关api
  6. 张勇:新技术是阿里“五新战略”的引擎
  7. PHP定时抽奖怎么实现的,定时抽奖活动怎么做?
  8. spark sql select selectExpr简析
  9. 一文搞懂JVM架构:java数据结构和c语言数据结构区别
  10. 软件配置管理的作用?软件配置包括什么?
  11. 网工常用网络命令合集✨(建议收藏)
  12. html 防网页假死,htmlweb开发:防止浏览器假死的方法.doc
  13. 如何进行网站流量分析?你需要知道这些指标
  14. 七号信令:MTP层简介
  15. Excel·VBA工作簿拆分所有工作表单独保存
  16. 1024程序员节200G资料大放送
  17. 简单描述下微信小程序的相关文件类型?
  18. Python爬虫项目:爬取JSON数据存储Excel表格与存储图片
  19. 从滴滴到AirBnB,交易平台战争的秘密
  20. html+css知识点全面总结(三)

热门文章

  1. oracle awr top5,ORACLE AWR简介
  2. P3628 [APIO2010]特别行动队(简单斜率优化)
  3. matlab中椭圆画法zz
  4. 成人高考和自考有什么区别?成人大学可以考哪些学校?
  5. 华为2021.04.21校园招聘软件机考题
  6. ComponentOne Studio WinUI
  7. 敏捷如何应对变化:敏捷团队检查和适应
  8. maven项目pom.xml中添加axis2 的配置
  9. c语言调试结果显示不是内部或外部命令,telnet命令测试端口连接是否正常, telnet不是内部或外部命令的方案...
  10. Database-doc 数据库文档展示工具