Trotz des Alters dieser Frage fand ich sie kürzlich sehr nützlich und kann daher nur davon ausgehen, dass andere sie noch sehen. Nachdem ich hier und anderswo nachgesehen hatte, vermutete ich, dass die drei wichtigsten clientseitigen Überprüfungen zur indirekten Erkennung eines Werbeblockers auf blockiert div
/ img
blockiert wareniframe
s und blockierten Ressourcen (Javascript-Dateien) zu .
Vielleicht ist es übertrieben oder paranoid, aber es deckt Anzeigenblockierungssysteme ab, die nur ein oder zwei aus der Auswahl blockieren und daher möglicherweise nicht abgedeckt wurden, wenn Sie nur die eine Prüfung durchgeführt haben.
Auf der Seite, auf der Sie die Prüfungen ausführen, fügen Sie Folgendes hinzu: (Ich verwende 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>
und fügen Sie an einer anderen Stelle auf der Seite Folgendes hinzu:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Ich habe ein Div mit einem Ködernamen sowie ein extern gehostetes Bild mit dem Text "Advert" und in den von AdSense verwendeten Dimensionen verwendet (dank placehold.it!).
In advertisement.js
sollten Sie etwas an das Dokument anhängen, das wir später überprüfen können. Obwohl es so aussieht, als würden Sie das Gleiche tun wie zuvor, prüfen Sie tatsächlich, ob die Datei ( advertisement.js
) selbst geladen wird, nicht die Ausgabe.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
Und dann das Werbeblocker-Erkennungsskript, das alles kombiniert
$(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);
});
Wenn das Dokument fertig ist , dh das Markup geladen ist, fügen wir dem Dokument auch den Iframe hinzu. Wenn dann das Fenster geladen wird , dh der Inhalt inkl. Bilder etc. geladen werden, prüfen wir:
- Die Abmessungen und Sichtbarkeit des ersten Testdiv.
- Dass der Inhalt des zweiten Test div ist „Kontrolle“, wie es , wenn das gewesen wäre ,
advertimsent.js
wurde nicht gesperrt.
- Die Abmessungen (und ich denke die Sichtbarkeit, da ein verstecktes Objekt keine Höhe oder Breite hat?) Des Iframes
Und die Stile:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Hoffe das hilft