@President42

Userscript для отключения блокировки плеера на filmsonline.com.ua?

На filmsonline.com.ua при включённом Adblock поверх плеера всплывает блокирующее плеер предупреждение: "Вы используете наш плеер с включенным блокировшиком рекламы!
Мы просим Вас поставить наш плеер в исключение блокировщика, иначе мы не сможем далее поддерживать его"
Конечно, можно просто залезть в исходный код страницы и удалить блок с предупреждением, но хотелось бы оформить это в виде UserCSS / UserJS.
Сначала я попробовал добавить на страницу UserCSS с помощью Stylish -- никакого эффекта. Я подумал, что, наверное, стили для этого блока генерируются скриптами после загрузки страницы, поэтому Stylish не работает. Написал с помощью CustomJS такой UserJS:

document.body.addEventListener("click", function() {
    sheet = (function() {
        	var style = document.createElement("style");
    
    	    style.appendChild(document.createTextNode(""));
    
        	document.head.appendChild(style);
    
        	return style.sheet;
    })();

    sheet.insertRule("a-overlay, a-head, a-body, a-container, a-bounceInDown { display: none !important; }", 0);
    console.log("Success!");
});

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

Но ничего не работает. То есть, в консоли появляется уведомление "Sucsess", и если прописать в вставляемом скриптом правиле body {display: none}, то по клику страница очищается. Почему же не получается убрать таким образом рекламу?

P. S. Ещё почему-то эти блоки не ищутся document.querySelectorAll('.a-overlay') и document.getElementsByClassName('a-overlay'). При этом кириллицы в названиях классов нет, я проверил, всё на латинице.
  • Вопрос задан
  • 382 просмотра
Решения вопроса 1
@asdz
Потому что вы выполняете document.getElementsByClassName('a-overlay') на странице, а элемент этот во фрейме. Скрипт должен выглядеть так:
// ==UserScript==
//@include http://*.moviki.ru/*
// ==/UserScript==
var elem = document.getElementsByClassName('a-overlay')[0];
	elem.parentNode.removeChild(elem);

правда все равно 10 секундное пустое окошко появится.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы