Javascript 为使用AdBlocker的用户显示替代内容
我在做一个广告资助的项目。真的是一些微妙和内容意识,而不是跛脚弹出生殖器扩大等 由于该项目是由广告资助的,有广告屏蔽的人将不会从该项目中受益(因为他们显然不知道该特定网站上的广告没有那么糟糕) 如何为使用广告拦截器的用户显示替代内容?差不多 我们注意到你有一个活跃的广告拦截器。Example.com由广告资助,我们承诺我们的广告质量高且不引人注目。你能为我们提供的最好的帮助就是在你的广告拦截器中将我们列入白名单。谢谢 如何测试广告拦截器Javascript 为使用AdBlocker的用户显示替代内容,javascript,jquery,ads,adblock,Javascript,Jquery,Ads,Adblock,我在做一个广告资助的项目。真的是一些微妙和内容意识,而不是跛脚弹出生殖器扩大等 由于该项目是由广告资助的,有广告屏蔽的人将不会从该项目中受益(因为他们显然不知道该特定网站上的广告没有那么糟糕) 如何为使用广告拦截器的用户显示替代内容?差不多 我们注意到你有一个活跃的广告拦截器。Example.com由广告资助,我们承诺我们的广告质量高且不引人注目。你能为我们提供的最好的帮助就是在你的广告拦截器中将我们列入白名单。谢谢 如何测试广告拦截器 找到了一个例子 我不知道广告拦截器是如何工作的,但例如a允
找到了一个例子 我不知道广告拦截器是如何工作的,但例如a允许我选择一个包含要删除的广告的特定DOM元素:
。。。广告代码>,拦截器会以某种方式将其删除
如果您在该div中放入一些javascript,使用一个短的计时器,它将修改一个全局变量,然后再执行另一个计时器,读取该全局变量,那么如果该变量设置正确,您是否可以假设页面上没有广告拦截器?如果阻止程序在Chrome评估该javascript之后删除div,那么即使父div被删除,计时器仍会设法设置变量吗
AdBlock还维护“坏”服务器的公共列表(http://www.doubleclick.com ?)并且可能会阻止来自这些服务器的内容http请求。如果它与Chrome集成,这样它就可以定义某种内容策略——加载什么和不加载什么。您可以使用前面描述的方法检测这种情况。如果你的客户是广告提供商,我想迟早会被列入黑名单:)
阻止程序可能只修改CSS并隐藏整个div,但这很容易被检测到。最常见的技巧是创建一个JavaScript文件,其名称通常被AdBlocker阻止,例如/ads/adve.js
。
如果文件被阻止,您知道访问者启用了adblocker
CSS文件通常不会被adblocker列表阻止,因此这将是一种更安全的方法。在这里即兴拍摄,但我认为你可以在页面加载后使用一些javascript检查广告div的内容
<!-- html -->
<div id="MyAdDiv">
<div id="BeaconContainer" style="display:none">I rendered!</div>
// Ad content here.
</div>
// javascript
var d = document.getElementById("MyAdDiv");
if ( d.innerHTML.indexOf("I rendered!") === -1 ) {
// Your ad has been blocked.
// Run code to launch WhiteList request message.
}
我做了!
//广告内容在这里。
//javascript
var d=document.getElementById(“MyAdDiv”);
if(d.innerHTML.indexOf(“I rendered!”)=-1){
//你的广告已被屏蔽。
//运行代码以启动白名单请求消息。
}
我不知道adblocker什么时候做这件事,所以最好是将这个函数的执行延迟几秒钟。在一些ajax调用中,您可能还可以做一些有趣的事情,比如收集关于有多少用户正在运行广告拦截器的统计数据。管理层就是喜欢这种东西
更新:
我刚刚为Chrome安装了adblock,并对其进行了StackOverflow检查。看起来AdBlock只是删除了广告容器的内容,所以上面的方法可以工作。广告拦截器基本上是使用一些ID或类似jQuery的选择规则来操作一些元素,这些规则存储在它们的数据库中,在DOM准备好后的一段时间内完成
因此,您必须检查您的广告元素是否在特定时间后(例如DOM准备就绪后3秒)被操纵。您基本上可以检查显示
(因为AdBlockers会隐藏它)CSS属性或您的广告元素的innerHTML。以下是一个例子:
工作演示:(使用测试,您需要激活此功能)
如果您的广告HTML为:
<div id="google_ads_frame1">aa</div>
希望上面的代码是不言自明的:)最终,我使用了以下实现(类似于)。使用以下代码:
function abp() {
if ($('.ad').height() == 0) {
$('.ad').css("height", "90px");
$('.ad').css("background-image", "url(/static/images/msblock.png)");
}
}
$(abp);
在文件的最后。看起来像个职业选手。谢谢大家的精彩回答,全体投票 我最喜欢的方法是简单地在我的网站上所有漂亮的、大的、有用的内容块周围添加一类“广告”或“广告”或类似的东西,然后当有广告拦截者的人看到它时,他们什么也看不到
他们被迫禁用广告块以查看内容
不要为警告而烦恼,让他们来解决。它不是使用广告屏蔽软件的傻瓜
下面是一些流行的adblock扩展中的块规则的当前列表。只需选择他们正在阻止的类或id(使用开发人员工具查看css类列表)这也可以通过简单的JavaScript来完成,而无需使用jQuery
<script>
window.onload = function(){
setTimeout(showAdblockImage, 3000);
};
function showAdblockImage(){
//get all google ad elements
var adsList = document.querySelectorAll("ins.adsbygoogle");
if(!adsList){ return;}
for(var i=0; i<adsList.length;i++){
if(adsList[i].innerHTML.replace(/\s/g, "").length != 0){
//AdBlock is not active, hence exit
break;
}
//apply inline css to force display
adsList[i].style.cssText = 'display:block !important';
//modify html content of element
adsList[i].innerHTML='<img src="imageurl/img_1.jpg" />';
}
}
</script>
window.onload=函数(){
设置超时(showAdblockImage,3000);
};
函数showAdblockImage(){
//获取所有谷歌广告元素
var adsList=document.queryselectoral(“ins.adsbygoogle”);
如果(!adsList){return;}
对于(var i=0;i//在所有页面元素都加载了window.onload=function()之后运行{
//这将处理异步谷歌广告
setTimeout(函数(){
//我们的目标是AdSense的第一条横幅广告
var ad=document.querySelector(“ins.adsbygoogle”);
//如果广告不包含innerHTML,则广告拦截器正在工作
如果(ad&&ad.innerHTML.replace(/\s/g,“”).length==0){
//因为广告块也使用CSS隐藏广告
ad.style.cssText='display:block!important';
//您可以在此处放置任何文本、图像甚至IFRAME标记
ad.innerHTML='';
}
},2000);//在页面加载后2秒执行ad阻止程序检查};
使用此代码,您可以在谷歌广告的重播中设置图像您可以实现这一功能,它非常好且易于使用。作为使用广告拦截器的人,我不知道我对有人绕过它的感觉如何。显然,但有时,我们真的没有选择。有一些网站
<script>
window.onload = function(){
setTimeout(showAdblockImage, 3000);
};
function showAdblockImage(){
//get all google ad elements
var adsList = document.querySelectorAll("ins.adsbygoogle");
if(!adsList){ return;}
for(var i=0; i<adsList.length;i++){
if(adsList[i].innerHTML.replace(/\s/g, "").length != 0){
//AdBlock is not active, hence exit
break;
}
//apply inline css to force display
adsList[i].style.cssText = 'display:block !important';
//modify html content of element
adsList[i].innerHTML='<img src="imageurl/img_1.jpg" />';
}
}
</script>
<script> // Run after all the page elements have loaded window.onload = function(){
// This will take care of asynchronous Google ads
setTimeout(function() {
// We are targeting the first banner ad of AdSense
var ad = document.querySelector("ins.adsbygoogle");
// If the ad contains no innerHTML, ad blockers are at work
if (ad && ad.innerHTML.replace(/\s/g, "").length == 0) {
// Since ad blocks hide ads using CSS too
ad.style.cssText = 'display:block !important';
// You can put any text, image or even IFRAME tags here
ad.innerHTML = '<img src="http://blog.liveurlifehere.com/wp-content/uploads/2015/01/adblock.jpg" width="300" height="250" />';
}
}, 2000); // The ad blocker check is performed 2 seconds after the page load }; </script>