Adblock блокирует перенаправления iframe - как обнаружить?

У меня есть страница, которая выполняет много переадресаций внутри iframe, где целями являются в основном страницы партнерской сети (которые выполняют перенаправления в магазины и т. Д.), Разметка выглядит примерно так:

http://jsfiddle.net/HPDNC/2/

Как видите, если у вас включен блокировщик рекламы, iframe не загружается. Мне нужно как-то обнаружить это, чтобы я мог сделать прямое перенаправление или хотя бы проинформировать пользователя о ситуации.

Обычным способом было бы просто проверить объявление или что не обнаружить, если блокировщик рекламы активен. К сожалению, на этой странице нет реальных объявлений для проверки.

2 ответа

Вы можете определить, посещается ли ваш сайт с помощью блокировщиков рекламы. в <head> тег, - или действительно где угодно - поместите это:

<script type="text/javascript">
window.ADS_BLOCKED = true;
</script>
<script type="text/javascript" src="/advertise/detect.js"></script>
<script type="text/javascript">
if (window.ADS_BLOCKED)
   alert('You blocked me...');
</script>

Включенный Javascript detect.js установил бы window.ADS_BLOCKED в false, Блокировщики рекламы будут препятствовать загрузке этого файла из-за его имени файла ("реклама").

Присвойте iframe идентификатор, и вы сможете проверить его наличие с помощью javascript.

Вот пример:

<script type="text/javascript">

if(document.getElementById("ad") == null) {
    alert("The ad has been removed!");
}
else
{
    alert("It's alright, it's still here.");
}

</script>

РЕДАКТИРОВАТЬ: только что исправил ошибку.

Это дает Javascript возможность доступа к вашему рекламному элементу. Код Javascript, который следует после (if(document.getElementById("ad") == null)) просто проверяет, существует ли элемент - если он не существует, это означает, что рекламодатель удалил его.

Некоторые рекламные блокировщики (например, более ранние версии AdBlock for Chrome) просто скрывают элемент, а не удаляют его - я оставлю это как упражнение для вас, потому что я когда-либо проверял CSS на элементах DOM только через JQuery.

РЕДАКТИРОВАТЬ 2:

Используя этот ответ здесь, вы можете просто проверить, правильно ли загружен HTML-код в iframe, и ответить на основании этого.

Другие вопросы по тегам