Как заставить Javascript выполнить при прокрутке? - PullRequest
0 голосов
/ 26 февраля 2020

Я создаю скрипт Tampermonkey, который позволяет вам скрыть подредакты с первой страницы Reddit. Работает все хорошо, но только на первой странице. Проблема в том, что когда вы начинаете прокрутку, Reddit загружает новые элементы (бесконечная прокрутка), и код не работает для тех новых элементов, которые добавляются.

Я пытался добавить прослушиватель событий, но это не не работает Элементы по-прежнему отображаются при прокрутке.

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

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

});

1 Ответ

0 голосов
/ 26 февраля 2020

Ваш текущий код выберет один элемент, который соответствует этому селектору, перейдет к элементу-предку и установите его отображение на none. Элемент остается в документе, и никакие другие элементы не затрагиваются; когда произойдут будущие scroll события, будет выбран тот же элемент, и тот же предок будет скрыт (но его display уже none, поэтому он ничего не делает).

Итерация над всеми соответствующими элементами с querySelectorAll и удалите их из DOM с помощью .remove():

window.addEventListener("scroll", function(){
  for (const a of document.querySelectorAll('a[href*="politics"]')) {
    a.parentElement.parentElement.parentElement.parentElement.parentElement.parentElement.remove();
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...