Nonostante l'età di questa domanda, recentemente l'ho trovata molto utile e quindi posso solo supporre che ci siano ancora altri che la stanno visualizzando. Dopo aver guardato qui e altrove, ho ipotizzato che i tre principali controlli lato client per il rilevamento indiretto di un blocco pubblicità dovessero verificare il blocco div
/ img
, bloccatoiframe
risorse e bloccate (file javascript).
Forse è esagerato o paranoico, ma copre i sistemi di blocco degli annunci che bloccano solo uno o due fuori dalla selezione e quindi potrebbero non essere stati coperti se avessi fatto solo un controllo.
Nella pagina in cui stai eseguendo i controlli aggiungi: (Sto 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 aggiungi quanto segue altrove nella pagina:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Ho usato un div con un nome esca e un'immagine ospitata esternamente con il testo "Advert" e nelle dimensioni utilizzate da AdSense (grazie a placehold.it!).
In advertisement.js
te dovresti aggiungere qualcosa al documento che possiamo verificare in seguito. Anche se sembra che tu stia facendo lo stesso di prima, stai effettivamente controllando il file ( advertisement.js
) stesso che viene caricato, non l'output.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
E poi lo script di rilevamento del blocco degli annunci che combina tutto
$(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 il documento è pronto , ovvero viene caricato il markup, aggiungiamo anche l'iframe al documento. Quindi, quando viene caricata la finestra , ovvero il contenuto incl. immagini ecc. vengono caricate, controlliamo:
- Le dimensioni e la visibilità del primo div di prova.
- Che il contenuto del secondo div test sia "check", come sarebbe stato se non
advertimsent.js
fosse stato bloccato.
- Le dimensioni (e immagino che la visibilità, in quanto un oggetto nascosto non abbia altezza o larghezza?) Dell'iframe
E gli stili:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Spero che sia di aiuto