滚动时如何让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();
}
});
我正在创建一个 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()
:
window.addEventListener("scroll", function(){
for (const a of document.querySelectorAll('a[href*="politics"]')) {
a.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.remove();
}
});