JS监听页面滚动事件无效解决方案

window.addEventListener事件踩坑

1、在项目中使用window.addEventListener(“scroll”, this.handleFixedTop);事件监听无效解决方案:

window.addEventListener("scroll", this.handleFixedTop,true);

使其在事件捕获的时候触发,该值默认为false(事件冒泡)

2、const scrollT = document.documentElement.scrollTop;
获取不到scrollT,scrollT始终为0:
需要做兼容处理:

const scrollT =
        document.body.scrollTop || document.documentElement.scrollTop;

3、点击某个div,使页面滚动,滚动无效:

//无效代码
handleScroll(eleId) {
      const element = document.getElementById(eleId);
      const y = element.getBoundingClientRect().top + window.pageYOffset - 120;
      window.scrollTo({ top: y, behavior: "smooth" });
}
//document.body.scrollTo({ top: y, behavior: "smooth" });可以实现滚动,但是它始终根据盒子本身进行滚动,不能达到滚动到相应位置的效果

//有效代码
handleScroll(eleId) {
      const element = document.getElementById(eleId);
      const y = element.getBoundingClientRect().top + window.pageYOffset - 120;
      document.body.scrollTop += y;
}

你可能感兴趣的:(javascript,vue.js,前端)