window.addEventListener('scroll', xxx方法) 不被触发的原因
今天在做项目的时候,需要做一个滚动的效果。
发现在
mounted(){
window.addEventListener('scroll', this.pageScroll)
}
中注册的滚动事件没有生效。觉得真的很神奇。
我之所以觉得神奇,是因为之前是可以滚动触发的。
解决的办法
第1种: 添加上true
mounted(){
window.addEventListener('scroll', this.pageScroll,true)
}
第2种:查看父级元素是否有overflow:scroll;overflow:auto; 将他们去除。
虽然去除是可以解决的。但是这不是影响滚动事件不被触发的原因。这个是一个表现
第3种:注册在document上
mounted(){
document.addEventListener('scroll', this.pageScroll,true)
}
第4种:如果document上都不触发的话;
4.1 查看是否达到触发的条件。
4.2 注册在一个具体的元素上(这个元素要达到滚动的条件)
无法移除滚动事件
1. 因为事件是注册 document 上的。我移除的时候是 document 上移除的,发现不生效
我又在window 上移除了。结果生效了。神奇~!
尾声
我知道这肯定是哪里影响了。才会出现这些神奇的现象。
我本来想找到本质的原因。
但是后来花了很多时间,还是没有找到原因。就简单记录一下。
希望对小伙伴有用~
标签:滚动,window,注册,addEventListener,document,scroll
From: https://www.cnblogs.com/IwishIcould/p/17157342.html