
Я хочу узнать, как использовать Chrome devtools для создания собственных правил блокировки рекламы в соответствии с синтаксисом Ublock/Adblock. Теперь, прежде чем я это сделаю, мне нужно разобраться, как работают Chrome dev tools.
Обратите внимание на картинку, пожалуйста. Весь этот элемент div — это то, что я хочу заблокировать. К сожалению, этот элемент div имеет идентификатор. Указанный идентификатор — это случайный салат из цифр и букв, который меняется каждый раз, когда вы перезагружаете страницу.
Как мне выяснить, как на самом деле называется «id», чтобы я мог создать правило блокировки только для этого конкретного идентификатора с этим конкретным именем?
Бонусные баллы, если вы сможете показать мне, как создать правило :P
решение1
Если Id
генерируется случайным образом каждый раз, вам нужно найти какое-то другое свойство, уникальное для этого элемента DOM, к которому можно привязаться. Текстовые свойства не очень хороши, поскольку вы надеетесь, что никакой другой узел не будет использовать текст, по которому вы фильтруете, и что нет перевода на основе локали.
Тем не менее, я использовал его в этом примере, потому что не уверен, что на этом сайте AllMusic, который вы используете, есть что-то лучшее.
С использованиемПодчеркиваниеfind
С помощью функции можно выбрать дочерние узлы document.body
и вернуть первый узел, содержащий в тексте словосочетание «ad block».
var blockElem = _.find(document.body.childNodes, function (elem) {
return elem.innerText && elem.innerText.toLowerCase().indexOf("ad block") != -1 }
);
Теперь у вас есть элемент DOM, которым вы можете манипулировать (удалять, скрывать и т. д.).
Альтернативное использованиеjQuery-ыfilter
Функция:
var blockElem = $("body div").filter(function() {
return $(this).text().toLowerCase().indexOf("ad block") != -1;
}).first();
P.S.Мне кажется, что этот вопрос больше подходит для StackOverflow.
решение2
Фильтр скрытия Adblock Plus состоит из двух частей:<domain>##<selector>
Доменная часть — это просто разделенный запятыми список доменов, на которых элементы должны быть скрыты.
Селекторная часть определяет, какие элементы следует скрыть, и следует заСтандартный селектор CSS. Поэтому вместо того, чтобы учиться писать фильтры, я бы посоветовал изучить селекторы CSS, поскольку существует множество полезных ресурсов о том, как их писать.
Например, в этом случае может быть полезно знать, что вы можете выбрать элемент на основе того, где он находится в документе. например, body > :nth-child(1)
выберет первый элемент в теле. Для более конкретных селекторов вам нужно будет проверить, какие из его характеристик остаются постоянными, а какие изменяются.