javascript - 给body用addEventListener禁止touchmove,在冒泡阶段阻止,为何会阻止页面内部元素的滚动?
阿神
阿神 2017-04-11 12:45:42
0
1
674
$(‘body’).on(‘touchmove’, function (event) {event.preventDefault();});
or
document.addEventListener('touchmove', function(e){e.preventDefault()}, false);

addEventListener第三个参数默认为false,在冒泡阶段触发事件。按先捕获再冒泡来看,为何在冒泡阶段阻止滑动的默认行为,会影响到body的内部子元素的滚动。

阿神
阿神

闭关修行中......

reply all(1)
巴扎黑

问题描述的不太清楚,什么叫子元素的滚动?子元素不会滚动的吧,滚动是window的scroll。

新答案:
根据你的回复我试验了一下,发现在谷歌浏览器是不可以的,但是火狐可以。原因在于谷歌浏览器当你触发touchmove事件时产生了警告。

Unable to preventDefault inside passive event listener due to target being treated as passive. See https://www.chromestatus.com/...

这条警告应该是影响了页面的正常运行。

Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template