찾다

 >  Q&A  >  본문

javascript - 给body用addEventListener禁止touchmove,在冒泡阶段阻止,为何会阻止页面内部元素的滚动?

$(‘body’).on(‘touchmove’, function (event) {event.preventDefault();});
or
document.addEventListener('touchmove', function(e){e.preventDefault()}, false);

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

阿神阿神2774일 전670

모든 응답(1)나는 대답할 것이다

  • 巴扎黑

    巴扎黑2017-04-11 12:47:42

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

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

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

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

    회신하다
    0
  • 취소회신하다