滚动时如何让Javascript执行?

How to make Javascript execute when you scroll?

我正在创建一个 Tampermonkey 脚本,它允许您从 Reddit 的首页隐藏 subreddits。它工作得很好,但只在第一页上。问题是,当您开始滚动时,Reddit 会加载新项目(无限滚动)并且代码不适用于添加的那些新项目。

我尝试添加一个事件侦听器,但这不起作用。滚动时项目仍会出现。

window.addEventListener("scroll", function(){

document.querySelector('a[href*="politics"]').parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.style.display='none';

});

您当前的代码将 select 一个 元素匹配 select 或者,导航到祖先元素,并将其显示设置为 none.该元素保留在文档中,其他元素不受影响;当未来 scroll 事件发生时,相同的元素将被 selected,并且相同的祖先将被隐藏(但它的 display 已经是 none,所以它不会做任何事)。

querySelectorAll遍历所有个匹配元素,用.remove():

从DOM中移除它们
window.addEventListener("scroll", function(){
  for (const a of document.querySelectorAll('a[href*="politics"]')) {
    a.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.remove();
  }
});