Несмотря на возраст этого вопроса, я недавно нашел его очень полезным и поэтому могу только предположить, что есть другие, все еще просматривающие его. Посмотрев здесь и в других местах, я предположил, что основные три проверки на стороне клиента для косвенного обнаружения блокировщика рекламы заключались в проверке заблокированных div
/ img
, заблокированных iframe
и заблокированных ресурсов (файлов javascript).
Может быть, это чрезмерно или параноидально, но это относится к системам блокировки рекламы, которые блокируют только один или два из выбора и, следовательно, не могли бы быть покрыты, если бы вы сделали только одну проверку.
На странице вы запускаете проверки добавить: (я использую 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>
и добавить следующее где-нибудь еще на странице:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Я использовал div с именем приманки, а также размещенное снаружи изображение с текстом «Advert» и размерами, используемыми AdSense (благодаря placehold.it!).
В advertisement.js
вас должны добавить что - то к этому документу , который мы можем проверить позже. Хотя кажется, что вы делаете то же, что и раньше, вы фактически проверяете advertisement.js
загружаемый файл ( ), а не вывод.
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
А затем сценарий обнаружения блокировщика рекламы, который объединяет все
$(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);
});
Когда документ готов , т.е. разметка загружена, мы также добавляем в документ iframe. Затем, когда окно загружается , т.е. содержимое вкл. загружаются изображения и т. д., мы проверяем:
- Размеры и видимость первого теста div.
- То , что содержание второго теста DIV является «проверка», как это было бы , если
advertimsent.js
был не заблокировано.
- Размеры (и я думаю, видимость, поскольку скрытый объект не имеет высоты или ширины?) Фрейма
И стили:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Надеюсь это поможет