繁体   English   中英

Window Scroll 事件在 Microsoft Edge 中不起作用

[英]Window Scroll event doesn't work in Microsoft Edge

我已经设置了一个简单的函数来在从文档顶部滚动一些像素时向标题添加一个类,它可以在任何地方使用,但不能在 Edge 中使用。 任何想法为什么会这样?

控制台中没有错误,什么都没有,只是不起作用。

const headerScrollClass = () => {
  window.addEventListener('scroll', throttle(callback, 100));
}

function throttle(fn, wait) {
  let time = Date.now();
  return function () {
    if ((time + wait - Date.now()) < 0) {
      fn();
      time = Date.now();
    }
  }
}

const callback = () => {
  if (document.documentElement.scrollTop > 100) {
    document.querySelector('.header').classList.add('header--top');
  } else {
    document.querySelector('.header').classList.remove('header--top');
  }
}

正如 Huangism 所说,Microsoft Edge 似乎不支持document.documentElement.scrollTop 你可以试试 w3schools 中的例子 你会发现如果你只使用document.documentElement ,它在 Edge 中是行不通的。 所以我认为你应该在 Edge 中使用document.body.scrollTop

参考: https : //www.w3schools.com/jsref/prop_element_scrolltop.asp

您可以尝试以下代码使其在不同浏览器中兼容:

var scrollTop = window.pageYOffset 
            || document.documentElement.scrollTop  
            || document.body.scrollTop  
            || 0;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM