Коська (hithere1) wrote,
Коська
hithere1

  • 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).

Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 3 comments