Bu sorunun yaşına rağmen, son zamanlarda çok yararlı buldum ve bu yüzden sadece başkalarının hala görüntülediğini varsayabilirim. Buraya ve başka bir yere baktıktan sonra, bir reklam engelleyiciyi dolaylı olarak tespit etmek için ana üç istemci tarafının kontrolünün, engellenen div
/ img
, iframe
engellenen kaynakları ve engellenen kaynakları (javascript dosyaları) kontrol etmek olduğunu düşündüm .
Belki üstte veya paranoyaktır, ancak seçimden yalnızca bir veya ikisini engelleyen reklam engelleme sistemlerini kapsar ve bu nedenle yalnızca bir kontrolü yapmış olsanız örtülmemiş olabilir.
Sayfada çek eklenti çalıştırıyorsunuz: (Ben jQuery kullanıyorum)
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="advertisement.js"></script>
<script type="text/javascript" src="abds.js"></script>
ve aşağıdakileri sayfanın başka bir yerine ekleyin:
<div id="myTestAd"><img src="http://placehold.it/300x250/000000/ffffff.png&text=Advert" /></div>
Ben yem adı ile bir div yanı sıra "Advert" metni ve AdSense tarafından kullanılan boyutlarda harici olarak barındırılan bir görüntü kullandı (placehold.it sayesinde!).
In advertisement.js
size daha sonra kontrol edebilirsiniz belgeye şey eklemek gerekir. Her ne kadar eskisi gibi yapıyormuş gibi görünse de, aslında advertisement.js
çıktıyı değil, dosyanın ( ) yüklenmekte olduğunu kontrol ediyorsunuz .
$(document).ready(
{
$("body").append("<div id=\"myTestAd2\">check</div>");
});
Ardından, her şeyi birleştiren reklam engelleyici algılama komut dosyası
$(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);
});
Belge hazır olduğunda , yani işaretleme yüklendiğinde, iframe'i belgeye de ekleriz. Sonra, pencere yüklendiğinde , yani içerik dahil. görüntüler vb yüklü, biz kontrol:
- İlk test bölümünün boyutları ve görünürlüğü.
- İkinci test div'in içeriğinin " engellenmiş" olması, engellenmemiş olması durumunda
advertimsent.js
olduğu gibi .
- İframe'in boyutları (ve gizli bir nesnenin yüksekliği veya genişliği olmadığı için görünürlük sanırım)
Ve stiller:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
Bu yardımcı olur umarım