JavaScript实现检查页面上的广告是否被AdBlock屏蔽了的方法


Posted in Javascript onNovember 03, 2014

每个人都讨厌广告。看电视、看电影、看优酷、看网页时,对满天飞的广告也是深恶痛绝。广告是一个不招人喜欢的东西。但是,对一个中小网站站长/博客主来说,广告几乎是唯一的能成支持网站/博客正常运转的资金来源。如果一个博客主,只是无私发布稿件,能坚持几年的,很少。大多数慢慢失去了热情。

火狐浏览器和谷歌浏览器里都有能够屏蔽页面给广告的插件,最有名的是AdBlock和AdBlock Plus。前几天,我做一个统计,看看浏览网站的用户中有多少人使用了AdBlock插件,发现这个数目竟然有总浏览人数的1/5。

1/5是一个不小的数目。如何能让广告位在这1/5的使用了AdBlock插件的用户的页面上用其它图片代替呢?要想做到这一点,首先是要有个办法知道当前浏览器中使用了AdBlock插件。经过一些测试,我发现,AdBlock对“Ad”或“Google AD”这样的词非常敏感,只要是某个页面元素的ID或css class名中有“Ad”字样的,这个元素基本上都会被AdBlock插件屏蔽掉,也就是 display:none:

<div class='google-ad testAd'> 这个div将会被屏蔽掉 </div>

有了这个规律,我就能够使用JavaScript发现当前浏览器是否开启了AdBlock插件。首先,我们将Google广告代码放到一个div里,并且将div的css class name里放入一个很明显的表示google AD的类名:

<div class='google-ad testAd'> 这里放置Google广告代码</div>

然后在页面的底部用Js检测,:

if ($('.google-ad').height() == 0) showOtherImage();

这里还有一个问题,Google的广告通常是指Dom加载完毕后显示的,为了保证在Google广告加载完成后再进行探测,要给js代码加入延迟执行特征,这样避免了误检测:

$(function(){

   setTimeout(function(){

  if ($('.google-ad').height() == 0)

   showOtherImage();

  },3000);

});

这里的showOtherImage();方法里我们能做些什么呢?我们可以放一些京东、当当、亚马逊会其它网站的促销图片和链接,通过获取佣金,多少算是对损失的一点弥补。

Javascript 相关文章推荐
javascript或asp实现的判断身份证号码是否正确两种验证方法
Nov 26 Javascript
浅析jQuery对select操作小结(遍历option,操作option)
Jul 04 Javascript
javascript实现PC网页里的拖拽效果
Mar 14 Javascript
微信小程序 wxapp内容组件 progress详细介绍
Oct 31 Javascript
JS 终止执行的实现方法
Nov 24 Javascript
纯js实现悬浮按钮组件
Dec 17 Javascript
JS回调函数基本定义与用法实例分析
May 24 Javascript
JavaScript原型继承_动力节点Java学院整理
Jun 30 Javascript
关于Vue.nextTick()的正确使用方法浅析
Aug 25 Javascript
详解React Native开源时间日期选择器组件(react-native-datetime)
Sep 13 Javascript
Node使用Selenium进行前端自动化操作的代码实现
Oct 10 Javascript
解决antd Form 表单校验方法无响应的问题
Oct 27 Javascript
网页中表单按回车就自动提交的问题的解决方案
Nov 03 #Javascript
详解jquery中$.ajax方法提交表单
Nov 03 #Javascript
jquery处理json对象
Nov 03 #Javascript
js格式化时间小结
Nov 03 #Javascript
解决js下referer兼容各大浏览器的方法
Nov 03 #Javascript
jQuery修改li下的样式以及li下的img的src的值的方法
Nov 02 #Javascript
jQuery中ajax和post处理json的不同示例对比
Nov 02 #Javascript
You might like
php 之 没有mysql支持时的替代方案
2006/10/09 PHP
php array_intersect()函数使用代码
2009/01/14 PHP
php+jquery编码方面的一些心得(utf-8 gb2312)
2010/10/12 PHP
PHP单例模式与工厂模式详解
2017/08/29 PHP
Javascript 读书笔记索引贴
2010/01/11 Javascript
Javascript中获取出错代码所在文件及行数的代码
2010/09/23 Javascript
extjs render 用法介绍
2013/09/11 Javascript
jQuery 取值、赋值的基本方法整理
2014/03/31 Javascript
jQuery学习总结之jQuery事件
2014/06/30 Javascript
Javascript获取表单名称(name)的方法
2015/04/02 Javascript
javascript实现验证身份证号的有效性并提示
2015/04/30 Javascript
Javascript实现的Map集合工具类完整实例
2015/07/31 Javascript
AngularJS教程之环境设置
2016/08/16 Javascript
谈谈对JavaScript原生拖放的深入理解
2016/09/20 Javascript
详谈js模块化规范
2017/07/07 Javascript
vue 使用eventBus实现同级组件的通讯
2018/03/02 Javascript
Vue 自定义动态组件实例详解
2018/03/28 Javascript
详解Webpack4多页应用打包方案
2020/07/16 Javascript
JavaScript数组排序的六种常见算法总结
2020/08/18 Javascript
[00:32]2018DOTA2亚洲邀请赛Mineski出场
2018/04/04 DOTA
python正则匹配抓取豆瓣电影链接和评论代码分享
2013/12/27 Python
Python 获得13位unix时间戳的方法
2017/10/20 Python
在Python程序员面试中被问的最多的10道题
2017/12/05 Python
Python排序搜索基本算法之堆排序实例详解
2017/12/08 Python
Python Requests库基本用法示例
2018/08/20 Python
django项目用higcharts统计最近七天文章点击量
2019/08/17 Python
Python实现ATM系统
2020/02/17 Python
canvas实现图片马赛克的示例代码
2018/03/26 HTML / CSS
高街生活方式全球在线商店:AZBRO
2017/08/26 全球购物
Java基础面试题
2012/11/02 面试题
大学生最新职业生涯规划书范文
2014/01/12 职场文书
2015年派出所工作总结
2015/04/24 职场文书
欠款证明
2015/06/24 职场文书
格列夫游记读书笔记
2015/07/01 职场文书
2015年迎新晚会策划书
2015/07/16 职场文书
唱歌比赛拉拉队口号
2015/12/25 职场文书