A pesar de la antigüedad de esta pregunta, recientemente la encontré muy útil y, por lo tanto, solo puedo suponer que todavía hay otras personas que la están viendo. Después de buscar aquí y en otros lugares, supuse que las tres principales comprobaciones del lado del cliente para detectar indirectamente un bloqueador de anuncios eran para verificar si estaban bloqueadas div
/ img
bloqueadoiframe
s y los recursos bloqueados (archivos JavaScript).
Tal vez sea exagerado o paranoico, pero cubre los sistemas de bloqueo de anuncios que bloquean solo uno o dos de la selección y, por lo tanto, es posible que no se hayan cubierto si solo hubiera realizado una verificación.
En la página que está ejecutando, las comprobaciones agregan: (Estoy 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>
y agregue lo siguiente en cualquier otro lugar de la página:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Utilicé un div con un nombre de cebo, así como una imagen alojada externamente con el texto "Anuncio" y en las dimensiones utilizadas por AdSense (¡gracias a placehold.it!).
En advertisement.js
debe agregar algo al documento que podamos verificar más adelante. Aunque parece que está haciendo lo mismo que antes, en realidad está verificando que el archivo ( advertisement.js
) se cargue, no la salida.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
Y luego el script de detección de bloqueador de anuncios que combina todo
$(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);
});
Cuando el documento está listo , es decir, se carga el marcado, también agregamos el iframe al documento. Luego, cuando se carga la ventana , es decir, el contenido incl. imágenes, etc. está cargado, verificamos:
- Las dimensiones y la visibilidad de la primera prueba div.
- Que el contenido de la segunda div prueba es "verificación", ya que habría sido si el
advertimsent.js
era no bloqueado.
- Las dimensiones (y supongo que la visibilidad, ¿como un objeto oculto no tiene altura o ancho?) Del iframe
Y los estilos:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Espero que esto ayude