Коська ([info]hithere1) wrote,
@ 2006-04-21 19:01:00
Previous Entry  Add to memories!  Tell a Friend!  Next Entry
Current music:Юрий Наумов - Космос

Блокирование рекламы в жж

Не так давно в жж появились спонсируемые аккаунты - вид аккаунтов с расширенными возможностями, за которые приходится платить наличием рекламы на страницах журнала. Её (довольно большое поле справа (а в маленьких окнах - так оно вообще может оттеснять весь журнал вниз) и полоска в самом низу) видят все, открывающие такой жж, кроме тех, у кого самого платный аккаунт.

Так вот, как только появилась предварительная информация о таком нововведении, я с уверенностью заявил, что браузер Опера без проблем её заблочит. Я оказался прав. С этим вполне справляется вот этот скрипт, но после него остаётся гадкое серое поле на месте бывшей рекламы.

Специально чтобы убить рекламу бесследно, мной был написан следующий скрипт:

lj-ad-kill-by-hithere1.js
if(location.hostname.match(/(^|\.)livejournal\.com/)) {
function hideLjAds() {
var allTags=document.body.getElementsByTagName('*');
for(var i=0;i<allTags.length;i++) {
if(allTags[i].className.indexOf('ljad')!=-1) {
allTags[i].parentNode.removeChild(allTags[i]);
hidden++;
}
if(allTags[i].width=='20%' && allTags[i].align=='right' && allTags[i].vAlign=='top') {
allTags[i].parentNode.removeChild(allTags[i]);
hidden++;
}
if(hidden==2) clearInterval(hideInt);
}
var advIframe=document.getElementById('linkunitad');
if(advIframe) advIframe.setAttribute('style','display:none');

//var advIframe=document.getElementById('linkunitad');
//if(advIframe) advIframe.setAttribute('style','display:none');
}
var hidden=0;
var hideInt = setInterval(hideLjAds,500);
window.addEventListener("load",function(){
if(hideInt) {clearInterval(hideInt);}
//if(hidden) alert("No more ads in this lj! Thank you, hithere1.");
},false);
}

Устанавливается в Опере 8 или 9 как userjs (вот тут написано, как, правда, на английском). Он успешно борется со всей рекламой. Естественно, не тестил для всех возможных стилей, но где пробовал - везде работает.

Замечены некоторые недочёты.
1. Иногда, после скрытия рекламы справа, сам журнал не сдвигается туда, просто остаётся пустое место. Как исправить - не знаю, возможно, это специфика моей версии Оперы (8.50).
2. Порой вместо полоски внизу остаётся маленький квадратик. Починить можно, наверное, но мне лень париться - того не стоит.

В дальнейшем буду модифицировать скрипт. Сам переходить на платный аккаунт пока не собираюсь. Ещё раз напомню: чтобы использовать этот скрипт, необходим браузер Опера (http://www.opera.com).

Вопросы, предложения, сообщения об ошибках - милости просим.

upd
1. Добавлены две строки для блокирования верхней панельки. Если надо использовать - разкомментируйте (удалить // в начале).
2. Закомментировал alert (выскакивающее окошко с сообщением, что реклама удалена). Если надо - опять же можно разкомментировать.
3. Чтобы скрипт меньше грузил комп, изменено значение в setInterval со 100 до 500 миллисекунд. Актуально, когда открыто много страниц жж. Если параллельно используется упомянутый hide-objects, то, чтобы реклама блокировалась моим скриптом, в hide-objects надо поставить интервал больший, например, 1000 мс (по дефолту - 200).




(Post a new comment)


[info]onsamyj
2006-04-21 06:00 pm UTC (link)
А пример журнала с рекламой можно, а то я не сталкивался ещё? Ещё начинаю подумывать о блокировки «полосы навигации» (например у [info]stardragon88) — жуткая вещь!

Кстати, ваше действие противоречит ToS (XVI 17). ;)

(Reply to this) (Thread)


[info]hithere1
2006-04-21 09:53 pm UTC (link)
http://blogs.yandex.ru вводишь "спонсируемый аккаунт" - куча журналов, все хвастаются: мол, я перешёл, бла-бла-бла...

Верхняя полоска (первый раз вижу такую гадкую приблуду) элементарно по id блочится, добавляешь в код скрипта (рядом с похожими двумя строчками):
var fuckingStrip=document.getElementById('lj_controlstrip');
if(fuckingStrip) fuckingStrip.setAttribute('style','display:none');

Если ко мне обратятся официальные лица по поводу нарушения чего-то, то уберу. Но, очевидно, по заинтересованному народу разойдётся быстро, что бы они ни делали :)

(Reply to this) (Parent)(Thread)


[info]onsamyj
2006-04-22 07:17 am UTC (link)
Ага, посмотрим.

Эта гадкая приблуда, настраивается разными способами: показывать мне во всех жж и показывать всем в моём! Вот людей, выбирающих последний пункт — стрелять!

Как убрать то я знаю, чай не в первой, просто мне эта «полоса навигации» попалась в первый раз — привинчивать скрипт «чтоб было» не по мне. Достанут — сделаю.

Да здравствует Опера! :)

(Reply to this) (Parent)


Create an Account
Forgot your login or password?
Login w/ OpenID
English • Español • Deutsch • Русский…