Apesar da idade dessa pergunta, recentemente a achei muito útil e, portanto, só posso assumir que ainda há outras pessoas que a visualizam. Depois de procurar aqui e em outros lugares, supus que as três principais verificações do lado do cliente para detectar indiretamente um bloqueador de anúncios fossem verificar recursos bloqueados div
/ img
, bloqueados iframe
e bloqueados (arquivos javascript).
Talvez esteja exagerado ou paranóico, mas cobre sistemas de bloqueio de anúncios que bloqueiam apenas um ou dois da seleção e, portanto, podem não ter sido cobertos se você tivesse feito apenas uma verificação.
Na página em que você está executando as verificações, adicione: (Estou usando jQuery)
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>
e adicione o seguinte em qualquer outro lugar da página:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Usei uma div com um nome de isca e uma imagem hospedada externamente com o texto "Advert" e nas dimensões usadas pelo AdSense (graças a placehold.it!).
Em advertisement.js
você deve acrescentar algo ao documento que podemos verificar mais tarde. Embora pareça que você está fazendo o mesmo que antes, na verdade você está verificando se o próprio arquivo ( advertisement.js
) está sendo carregado, não a saída.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
E então o script de detecção do bloqueador de anúncios que combina tudo
$(document).ready(function()
{
var ifr = '<iframe id="adServer" src="http://ads.google.com/adserver/adlogger_tracker.php" width="300" height="300"></iframe>';
$("body").append(ifr);
});
$(window).on("load",function()
{
var atb = $("#myTestAd");
var atb2= $("#myTestAd2");
var ifr = $("#adServer");
setTimeout(function()
{
if( (atb.height()==0) ||
(atb.filter(":visible").length==0) ||
(atb.filter(":hidden").length>0) ||
(atb.is("hidden")) ||
(atb.css("visibility")=="hidden") ||
(atb.css("display")=="none") ||
(atb2.html()!="check") ||
(ifr.height()!=300) ||
(ifr.width()!=300) )
{
alert("You're using ad blocker you normal person, you!");
}
},500);
});
Quando o documento está pronto , ou seja, a marcação é carregada, adicionamos o iframe ao documento também. Então, quando a janela estiver carregada , ou seja, o conteúdo incl. imagens etc. é carregada, verificamos:
- As dimensões e a visibilidade da primeira div de teste.
- Que o conteúdo da segunda div de teste é "cheque", como teria sido se não
advertimsent.js
estivesse bloqueado.
- As dimensões (e acho que a visibilidade, como um objeto oculto, não tem altura ou largura?) Do iframe
E os estilos:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Espero que isto ajude