#javascript #html
#javascript #HTML
Вопрос:
РЕДАКТИРОВАТЬ: я подумал, что добавлю здесь вверху, что причина, по которой я это делаю, заключается в том, что фильтр для Reddit Enhancement Suite у меня не работает, и мне в любом случае не нужны все остальные его функции.
Я пытаюсь создать расширение для браузера для моего личного использования, которое фильтрует субредакты на reddit, которые я не хочу видеть. Я довольно долго гуглил и дошел до того, что могу удалить post с идентификатором div следующим образом:
var element = document.querySelector("div.divid");
element.parentElement.removeChild(element);
Таким образом, это работает для удаления сообщения, однако каждый идентификатор div уникален для каждого сообщения. Следовательно, это не работает для непрерывного удаления сообщений из определенного субредакта.
Просматривая html страницы, если я покопаюсь внутри div, который инкапсулирует post, я смогу найти:
<a class="class_name" data-click-id="subreddit" href="/r/subredditname/">r/subredditname</a>
Я пытался посмотреть, могу ли я удалить по имени класса? Опять же, имя класса уникально для каждого поста. Итак, что мне интересно, поскольку я, кажется, не могу найти правильную формулировку для поиска ответа, могу ли я использовать приведенный выше код для выполнения:
var element = document.querySelectorAll("r/subredditname");
element.parentElement.removeChild(element);
или что-то в этом роде, чтобы удалить весь пост, основываясь исключительно на тексте внутри класса, который отображает имя субредакта внутри поста?
Комментарии:
1. Вы можете взглянуть на селекторы атрибутов; developer.mozilla.org/en-US/docs/Web/CSS/Attribute_selectors (вы также можете запрашивать классы, но ваш пример — href, поэтому выбор атрибута имеет больше смысла)
2. Спасибо за ответ! Я пробовал: document. querySelector(«a[href *=’/r/subredditname /’]»); но, похоже, это ничего не делает. Я неправильно понимаю атрибуты?
Ответ №1:
Хорошо, я понял это! Благодаря комментарию Рене я исправил его, чтобы быть:
var element = document.querySelector("a[href*='/r/subredditname/']");
element.parentElement.parentElement.parentElement.remove();
Это работает в основном для удаления всего сообщения. Это оставляет после себя небольшую строку, но это работает. Мне придется его пересмотреть, потому что рассылка спама parentElement не кажется самым привлекательным решением, но спасибо!