Многие (если не все) знакомы с ресурсом bash.org.ru. И, хотя юмор там в последнее время очень тупой, старые шутки почитать временами можно. Помимо тупого юмора лично меня на bash.org.ru больше всего раздражает не менее тупая реклама И если со всякими
iframe
и иже с ним AdBlock может бороться, то со вставками вида
Дэвид Блэйн раскукожил Firefox! Теперь в нём Яндекс!
он уже не справляется (так как они вставляются в вывод на сервере). Достал меня Дэвид Блейн. И Яндекс меня достал. И еще много что меня достало. Наверное, надо отдохнуть. Но речь не об этом. В общем, если меня что-то раздражает, я от этого избавляюсь (если читать, то с комфортом). Задачка как раз для Greasemonkey.
Ранее я уже приводил пример пользовательского скрипта для извлечения ASIN с amazon.com. Здесь используется нечто похожее.
Идея состоит в том, что для нормальных цитат после <hr class="iq">
сразу идет <script type="text/javascript" language="JavaScript">
и только потом <div class="q">
, а в случае с рекламой <script>
отсутствует; всё показано на рисунке:
Переходим к коду.
// @name Bash.org.ru Ads Remover
// @namespace http://sjinks.org.ua/
// @include http://bash.org.ru/*
// @exclude http://bash.org.ru/abysstop
// @exclude http://bash.org.ru/abyssbest
// ==/UserScript==
var x = document.evaluate(
'//div[@id="quotes"]/hr[@class="iq"]/following-sibling::*[position()=1][@class="q"]',
document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);
for (var i=0; i<x.snapshotLength; ++i) {
var a = x.snapshotItem(i);
while (1) {
var b = a.nextSibling;
a = a.parentNode.removeChild(a);
if (b.tagName && 'div' == b.tagName.toLowerCase()) {
a = b;
}
else {
break;
}
}
}
x = document.evaluate('//iframe', document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null);
for (i=0; i<x.snapshotLength; ++i) {
a = x.snapshotItem(i);
a.parentNode.removeChild(a);
}
Устанавливаем, активируем и не смотрим на рекламу. Всё-таки XPath — это вещь!
То же самое для tak-to.ru:
// @name tak-to.ru Ads Remover
// @namespace http://sjinks.org.ua/
// @include http://tak-to.ru/*
// ==/UserScript==
var x = document.evaluate(
'(//div[@id="middle"]//table//td[position()=3])|(//div[@id="middle"]//div[not(@id)])',
document, null, XPathResult.UNORDERED_NODE_SNAPSHOT_TYPE, null
);
for (var i=0; i<x.snapshotLength; ++i) {
var a = x.snapshotItem(i);
a.parentNode.removeChild(a);
}
Читать со страницы - прошлый век уже
Слава богу, пока не догадались рекламу в rss пихать. И вообще, freebsd.rusnet.org.ru/bash педалит %)
з.ы. задолбался угадывать капчу