Mimo wieku tego pytania ostatnio uznałem je za bardzo przydatne i dlatego mogę założyć, że są jeszcze inni. Po sprawdzeniu tutaj i gdzie indziej domyśliłem się, że trzy główne kontrole po stronie klienta w celu pośredniego wykrycia blokera reklam polegały na sprawdzeniu zablokowania div
/ img
zablokowaniaiframe
si zablokowanych zasobów (plików javascript).
Może jest to przesadne lub paranoiczne, ale obejmuje systemy blokujące reklamy, które blokują tylko jeden lub dwa spośród wybranych, a zatem może nie zostać uwzględnione, gdybyś tylko zrobił jedną kontrolę.
Na stronie, na której przeprowadzasz kontrole, dodaj: (Używam 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>
i dodaj następujące miejsce w dowolnym miejscu na stronie:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Użyłem div z nazwą przynęty, a także zewnętrznie hostowanego obrazu z tekstem „Advert” oraz w wymiarach używanych przez AdSense (dzięki placehold.it!).
W advertisement.js
was powinien dołączyć coś do dokumentu, który można sprawdzić na później. Chociaż wydaje się, że robisz to samo co poprzednio, w rzeczywistości sprawdzasz, czy advertisement.js
ładowany jest sam plik ( ), a nie dane wyjściowe.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
A następnie skrypt wykrywający blokowanie reklam, który łączy wszystko
$(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);
});
Gdy dokument jest gotowy , tzn. Ładuje się znaczniki, dodajemy do niego również ramkę iframe. Następnie, gdy okno jest załadowane , tzn. Zawartość zawiera. obrazy itp. są ładowane, sprawdzamy:
- Wymiary i widoczność pierwszego działu testowego.
- Że zawartość drugiego div testowego to „check”, tak jak by to było, gdyby nie
advertimsent.js
zostało zablokowane.
- Wymiary (i chyba widoczność, ponieważ ukryty obiekt nie ma wysokości ani szerokości?) Ramki iframe
I style:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Mam nadzieję że to pomoże