Scroll事件不能取消冒泡问题

mdn上写了,scroll事件冒泡并不能被取消:https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event

我当前遇到一个业务就是,在h5页面内,整个页面需要支持上下滑(touchstart/touchmove/touchend,changePage())切换页面,又要支持页面内某个区域内(scrollRegion)可以滚动(scroll)查看list。

一旦scroll,一定会被冒泡到touchstart/touchmove/touchend,然后执行changePage的操作。

我当前的解决办法是,在父组件监听touchstart/touchmove/touchend事件,一旦e.target在指定的scrollRegion中时,就不执行changePage操作,只执行默认的scroll操作。

那如何判断e.target在指定的scrollRegion中呢,我只想到了一个比较笨的办法,就是给scrollRegion中的所有标签的第一个class的name加上了相同的前缀 ‘xxx-‘,我只要判断e.target

的第一个calssname是否有此前缀即可。

e.target.classList[0].split(‘-‘)[0] === ‘xxx‘;

感觉这样做代码很脏,可是想不到更好的办法,如果小伙伴有更好的阻止scroll冒泡的方法,可以评论或者私信,谢谢。

原文地址:https://www.cnblogs.com/catherinezyr/p/11374456.html

时间: 2024-08-30 07:01:35

Scroll事件不能取消冒泡问题的相关文章

WPF快速指导10:WPF中的事件及冒泡事件和隧道事件(预览事件)的区别

本文摘要: 1:什么是路由事件: 2:中断事件路由: 3:自定义路由事件: 4:为什么需要自定义路由事件: 5:什么是冒泡事件和预览事件(隧道事件): 1:什么是路由事件 WPF中的事件为路由事件,所谓路由事件,MSDN定义如下: 功能定义:路由事件是一种可以针对元素树中的多个侦听器(而不是仅针对引发该事件的对象)调用处理程序的事件. 实现定义:路由事件是一个 CLR 事件,可以由 RoutedEvent 类的实例提供支持并由 Windows Presentation Foundation (W

javascript中的scroll事件

window.addEventListener('scroll',function(){ if(document.compatMode == "CSS1Compat") { alert(document.documentElement.scrollTop); } else { alert(document.body.scrollTop); } },false); 虽然scroll事件是在window对象上发生的,但它事件表示的则是页面中相应元素的变化.在混杂模式中,可以通过<bo

scroll事件实现监控滚动条并分页显示示例(zepto.js)

scroll事件实现监控滚动条并分页显示示例(zepto.js  ) 需求:在APP落地页上的底部位置显示此前其他用户的购买记录,要求此div盒子只显示3条半,但一页有10条,div内的滑动条滑到一页底部自动加载下一页并发加载埋点. 实现:首先理解三个概念,分别是contentH,viewH,scrollTop. contentH:即所要滑动的元素内容的高度,包括可见部分以及滚动条下面的不可见部分. ViewH:即我们看到的这个DIV的高度,不包括可见部分也不包括滚动条下面的不可见部分. scr

“如何稀释scroll事件”的思考

看了下园友的一帖子:http://www.cnblogs.com/xzhang/p/4145697.html#commentform 本来以为是很简单的问题,但仔细想想还挺有意思的.简单的说就是增加事件触发的间隔时间. 比如在浏览器状态了事件是1毫秒调用一次,转换成100毫秒调用一次. 看了下原贴的两方法,觉得可以乐观锁的方法再写个,结果对比后发觉和typeahead差不多.贴下代码和测试页面.看那位能指点下写的更好.:) var _lazyRun = function (func, wait)

scroll事件在IE,chrome,FF中的行为表现

周末想做一个滚动加载图片的效果.在IE,chrome,FF中验证时,忽然发现了一个有趣的问题. 问题是这样的: 1.     我发现鼠标滚动一次,scroll事件的处理函数执行的次数不一样. 2.     滚动的距离也不一样. 3.     点击滚动条滚动时,执行次数,滚动距离也不一样. 经过验证:        执行次数: 在IE5,6,7,8下,滚动一次,函数执行4次: 在IE9,10以上版本执行1次: 在chrome下,只执行一次.(chrome版本号:34.0.1847.116 m) 在

扩展jquery scroll事件,支持 scroll start 和 scroll stop

参考地址: http://www.ghugo.com/special-scroll-events-for-jquery/ javascript里有一个事件是滚动事件,只要拖动滚动条,就会触发事件. 用jquery的话,这个事件scroll 可以查看jquery api :http://api.jquery.com/scroll/ 但scroll 事件有一个缺陷,就是只能判断滚动条滚动,而不能监控滚动条停止滚动时的事件. 现用jquery扩展一下scroll 事件,新增 不多说,直接上代码实在点.

js的捕捉事件,冒泡事件

冒泡事件可以查询上个随笔, 捕捉事件正好和冒泡时间正反着 所以这代码我把冒泡事件注释, html和css的内容 <style type="text/css"> #box1{width:500px;height:500px;background:#900;} #box2{width:400px;height:400px;background:#090;} #box3{width:300px;height:300px;background:#009;} #box4{width:

JS中事件冒泡(Bubble)和事件捕获(Capture)以及如何阻止事件的冒泡

对“捕获”和“冒泡”这两个概念,通常我们对冒泡了解和使用的会更多一些,因为在我们使用的所有浏览器中,都支持事件冒泡 ,即事件由子元素向祖先元素传播的,就 像气泡从水底向水面上浮一样.而在像firefox,chrome,safari这类所谓的标准浏览器中,事件传播通常是有三个阶段的:事件捕获阶段,事件目标阶段,事件冒泡阶段,这三者的执行的顺序是先捕获在冒泡.对于捕获阶段,这个很少 有用武之地,所以被人疏忽遗忘也在所难免了,不常用不代表它不存在,本着科学严谨的态度,我们有必要去看一下它的庐山真面目.

jQuery事件:scroll事件

scroll事件:滚动元素时或者是使用scroll()方法会触发scroll事件 scroll()方法 触发选中元素的scroll事件 $(selector).scroll()//无参数 规定scroll事件被触发后的函数 $(selector).scroll( function ) function:js Function对象 详情