我希望能够检测用户是否正在使用广告拦截软件,当他们访问我的网站。如果他们正在使用它,我想显示一条消息,要求他们关闭它以支持项目,就像这个网站一样。
如果你进入该网站,而你的浏览器启用了某种广告拦截软件,那么该网站就不会显示真正的广告,而是显示一个小横幅,告诉用户广告收入用于托管项目,他们应该考虑关闭广告拦截。
我想在我的网站上做到这一点,我正在使用adsense广告,我怎么能做到呢?
我希望能够检测用户是否正在使用广告拦截软件,当他们访问我的网站。如果他们正在使用它,我想显示一条消息,要求他们关闭它以支持项目,就像这个网站一样。
如果你进入该网站,而你的浏览器启用了某种广告拦截软件,那么该网站就不会显示真正的广告,而是显示一个小横幅,告诉用户广告收入用于托管项目,他们应该考虑关闭广告拦截。
我想在我的网站上做到这一点,我正在使用adsense广告,我怎么能做到呢?
当前回答
要检测用户是否屏蔽广告,你所要做的就是在广告javascript中找到一个函数,并尝试测试它。他们用什么方法屏蔽广告并不重要。下面是谷歌Adsense广告的情况:
if(!window.hasOwnProperty('google_render_ad') || window.google_render_ad === undefined) {
//They're blocking ads, display your banner
}
该方法概述在这里:http://www.metamorphosite.com/detect-web-popup-blocker-software-adblock-spam
其他回答
html文件
<script src="wp-banners.js"></script>
<script>
if(document.getElementById('LavXngdFojBe')){
alert('Blocking Ads: No');
} else {
alert('Blocking Ads: Yes');
}
</script>
wp-banners.js
var e=document.createElement('div');
e.id='LavXngdFojBe';
e.style.display='none';
document.body.appendChild(e);
这也显示在https://detectadblock.com上。
这份文件可能会有所帮助。 这是检测广告拦截软件最有效的方法 完全免费且易于实现 https://www.detectadblock.com/
安全的方法是将广告包装在<div>内,并检查高度
<div id="check-ab">
/* your ads code */
</div>
setTimeout(function(){
if(document.getElementById("check-ab").offsetHeight === 0){
console.log("ads blocked");
}
else{
console.log("ads running");
}
}, 100);
它与adblock plus和bluehell防火墙一起工作。
我注意到之前的评论使用谷歌adsense作为测试对象。有些页面不使用adsense,使用adsense块作为测试并不是一个好主意。因为站长屏蔽可能会损害你的SEO。 以下是我如何通过adblocker检测简单的阻塞类的例子:
Html:
<div class="ad-placement" id="ablockercheck"></div>
<div id="ablockermsg" style="display: none"></div>
Jquery:
$(document).ready(function()
{
if(!$("#ablockercheck").is(":visible"))
{
$("#ablockermsg").text("Please disable adblocker.").show();
}
});
"ablockercheck"是adblocker阻止的ID。所以检查它,如果它是可见的,你能够检测,如果广告拦截器被打开。
尽管这个问题已经过时了,但我最近发现它非常有用,因此只能假设还有其他人在看它。在看了这里和其他地方之后,我猜测,间接检测广告拦截器的主要三种客户端检查是检查被阻止的div/img,被阻止的iframes和被阻止的资源(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!)
在advertising .js中,您应该在文档中附加一些内容,以便稍后检查。虽然看起来和前面做的一样,但实际上是在检查文件(advertising .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添加到文档中。然后,当窗口加载时,即内容include . images等加载,我们检查:
第一个测试div的尺寸和可见性。 第二个测试div的内容是“check”,就像如果advertimsent.js没有被阻止一样。 iframe的尺寸(我猜是能见度,因为隐藏对象没有高度或宽度?
以及款式:
div#myTestAd, iframe#adServer
{
display: block;
position: absolute;
left: -9999px;
top: -9999px;
}
div#myTestAd2
{
display: none;
}
希望这能有所帮助