Malgré l'âge de cette question, je l'ai récemment trouvée très utile et ne peux donc que supposer qu'il y en a d'autres encore. Après avoir regardé ici et ailleurs, j'ai supposé que les trois principales vérifications côté client pour détecter indirectement un bloqueur de publicités étaient de vérifier les div
/ img
bloqués, les iframe
s bloqués et les ressources bloquées (fichiers javascript).
C'est peut-être exagéré ou paranoïaque, mais cela couvre les systèmes de blocage des publicités qui ne bloquent qu'un ou deux de la sélection et peuvent donc ne pas avoir été couverts si vous n'aviez effectué qu'une seule vérification.
Sur la page où vous exécutez les vérifications, ajoutez: (J'utilise 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>
et ajoutez les éléments suivants ailleurs sur la page:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
J'ai utilisé un div avec un nom d'appât ainsi qu'une image hébergée en externe avec le texte "Advert" et dans les dimensions utilisées par AdSense (merci à placehold.it!).
En advertisement.js
vous devriez ajouter quelque chose au document que nous pouvons vérifier plus tard. Bien qu'il semble que vous fassiez la même chose qu'avant, vous vérifiez en fait le fichier ( advertisement.js
) lui-même en cours de chargement, pas la sortie.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
Et puis le script de détection du bloqueur de publicité qui combine tout
$(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);
});
Lorsque le document est prêt , c'est-à-dire que le balisage est chargé, nous ajoutons également l'iframe au document. Ensuite, lorsque la fenêtre est chargée , c'est-à-dire le contenu incl. images etc. est chargé, nous vérifions:
- Les dimensions et la visibilité du premier test div.
- Que le contenu du deuxième test div est "check", comme il l'aurait été s'il
advertimsent.js
n'était pas bloqué.
- Les dimensions (et je suppose que la visibilité, car un objet caché n'a pas de hauteur ou de largeur?) De l'iframe
Et les styles:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
J'espère que cela t'aides