我希望能够检测到用户访问我的网站时是否正在使用adblocking软件。 如果他们正在使用它,我想显示一条消息,要求他们关闭它以支持该项目,就像本网站一样。
如果您进入该站点,并且浏览器启用了某种adblock软件,则该站点会显示一个小横幅,告诉用户该广告收入用于托管该项目,而不是显示实际的广告,因此应考虑关闭Adblock 。
我想在我的网站上这样做,我在上面使用adsense广告,该怎么办?
#1楼
他们利用了Google的广告代码创建ID为“ iframe”的iframe的事实。 因此,只要您的页面上没有该ID的内容,这对您也将起作用。
<p id="ads">
<script type="text/javascript"><!--
google_ad_client = "their-ad-code-here";
/* 160x600, droite */
google_ad_slot = "their-ad-code-here";
google_ad_width = 160;
google_ad_height = 600;
//-->
</script>
<script type="text/javascript"
src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
</p>
<script type="text/javascript"><!--
if(document.getElementsByTagName("iframe").item(0) == null)
{
document.write("<div style='width:160px; height:600px; padding-top: 280px; margin-left:5px;border:1px solid #000000; text-align:center; font-family:century gothic, arial, helvetica, sans serif;padding-left:5px;padding-right:5px;'>Advertising seems to be blocked by your browser.<br /><br /><span style='font-size:10px'>Please notice that advertising helps us to host the project.<br /><br />If you find these ads intrusive or inappropriate, please contact me.</span><img src='http://www.playonlinux.com/images/abp.jpg' alt='Adblock Plus' /></div>");
}
--></script>
#2楼
我知道已经有足够的答案了,但是由于这个问题出现在Google在该主题上搜索“ detect adblock”的情况下,因此我想提供一些见识,以防您不使用adsense 。
具体而言,通过此示例,您可以检测是否使用了Firefox Adblock提供的默认Adblock-list。 利用此阻止列表的优势,可以使用CSS id #bottomAd
阻止一个元素。 如果我在页面中包含此类元素并测试其高度,我就会知道adblocking是否处于活动状态:
<!-- some code before -->
<div id="bottomAd" style="font-size: 2px;"> </div>
<!-- some code after -->
其余的通过通常的jQuery嫌疑人完成:
$(document).ready( function() {
window.setTimeout( function() {
var bottomad = $('#bottomAd');
if (bottomad.length == 1) {
if (bottomad.height() == 0) {
// adblocker active
} else {
// no adblocker
}
}
}, 1);
}
可以看出,我使用的setTimeout
的超时时间至少为1ms。 我已经在各种浏览器上进行了测试,大多数时候,直接检查ready
的元素总是返回0; 无论adblocker是否处于活动状态。 我对此有两个想法:要么尚未完成渲染,要么Adblock尚未启动。 我没有去做进一步的调查。
#3楼
<script src="http://code.jquery.com/jquery-latest.js"></script>
<script>var adb=true;</script>
<script src="./getbanner.cfm?"></script>
<script>
$(document).ready(function(){if(adb)alert('AdBlock!');});
</script>
并在getbanner.cfm文件中:
adb = false;
我认为这是检测adblock的最简单方法。
#4楼
这对我有用:
function isAdBlocked() {
return (typeof(window.google_jobrunner) === "undefined") ? true : false;
}
$(document).ready(function(){
if(isAdBlocked()) {
alert('Y U NO LIKE ADS?');
}
});
#5楼
我的解决方案不特定于某个广告网络,并且非常轻巧。 我已经在生产中运行了几年。 AdBlock阻止所有包含单词“ ads”的网址。 这就是我所做的:
我在webroot中添加了一个小js文件,名称为ads.js
这是该文件中的唯一代码行
var canRunAds = true;
然后在我页面的某处:
<html>
<head>
<script src="/js/ads.js"></script>
</head>
<body>
<script>
if( window.canRunAds === undefined ){
// adblocker detected, show fallback
showFallbackImage();
}
</script>
</body>
</html>
至少在Chrome上,以下adblocker阻止了ads.js之类的文件:
- AdBlock
- Adblock Plus
- Adblock Pro
- 幽灵
于2019-02-15更新:
在上面的列表中添加了Ghostery,因为该扩展程序现在还阻止了对ads.js的请求。 非常便利。 这是否意味着Ghostery实际上正在帮助我们的开发人员通过扩展对其广告进行拦截?
不适用于:
隐私Bad
来源:oschina
链接:https://my.oschina.net/stackoom/blog/3176247