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

火狐浏览器和谷歌浏览器里都有能够屏蔽页面给广告的插件,最有名的是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();方法里我们能做些什么呢?我们可以放一些京东、当当、亚马逊会其它网站的促销图片和链接,通过获取佣金,多少算是对损失的一点弥补。

原文:http://www.webhek.com/js-detect-adblock/

用JavaScript探测页面上的广告是否被AdBlock屏蔽了的方法相关推荐

  1. linux访问网页元素,Linux_DOM和JAVASCRIPT访问页面上的元素,访问方法:getElementById() - phpStudy...

    DOM和JAVASCRIPT访问页面上的元素 访问方法: getElementById():返回拥用传递给该方法的指定id的第一个对象的引用. getElementsByName():返回拥用传递该方 ...

  2. 用JavaScript获取页面上被选中的文字的技巧

    这里介绍的一个小技巧是如何用JavaScript获取页面上被选中的文字的方法.最关键的JavaScript API是: event.selection = window.getSelection(); ...

  3. 微信小程序 特殊布局下,页面上拉触底事件onReachBottom无法触发解决方法

    一.js import fn from '../../utils/functions.js'; // 你自己封装的方法集 Page({data: {list: [],page: 1,loading: ...

  4. Firefox火狐浏览器如何屏蔽CSDN页面上的广告(亲测有效!)

    前言:现在可能需要挂一下VPN才可以使用 今天真的是被CSDN的广告恶心到啦! 截图如下: 这个还好吧~虽然显得我很幼稚! 但是这个真的是不能忍呀! 什么呀!索性以后都不要再见啦! 搜索插件来屏蔽广告 ...

  5. 在web页面上快速生成批量二维码的实用方法

    最近帮同事制作了一个二维码工具,需求是一次性输入多个卡号批量生成二维码并打印.好了,现在我们直接看代码: <!DOCTYPE html> <html><head>& ...

  6. 用 javascript 获取当页面上鼠标(光标)位置

    用 javascript 获取当页面上鼠标(光标)位置在许多情况下都会用到,比如拖放,悬停提示(tooltip) 等等.当然,这里我们依然要面对浏览器的兼容问题,在不同的浏览器下,对这些相关的属性处理 ...

  7. php上传多张图片为什么只显示一张,javascript,_js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次???,javascript - phpStudy...

    js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次??? js多张图片上传 也拿到多张图片的路径 在页面上展示只显示一张?只执行了一次??? self.$els.upload ...

  8. 使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理。距离远时图片放大,距离近时图片缩小

    查看本章节 查看作业目录 需求说明: 使用JavaScript 中的Math对象和勾股定理公式,计算鼠标的位置与页面图片中心点的距离,根据距离对页面上的图片进行放大或缩小处理.距离远时图片放大,距离近 ...

  9. greasemonkey_Greasemonkey –在任何页面上执行自定义JavaScript

    greasemonkey If you want to try executing custom local scripts on any page you visit, try Greasemonk ...

最新文章

  1. 横向瀑布流android,RecyclerView实现瀑布流布局
  2. django项目mysql中文编码问题
  3. [转]Visual Studio 2010帮助文件MSDN安装说明
  4. 神策 FM:每周成长 8%,企业用户增长四步骤——一个成功案例
  5. AttributeError: ‘str‘ object has no attribute ‘read‘
  6. Asp.Net Core 已支持 gRPC-Web !!
  7. Matlab R2010a 32bit 绿色免安装版
  8. 运行Docker时不加sudo
  9. 计算机信息技术基础知识教案,计算机的基础知识
  10. Eclipse基础--java环境变量设置
  11. 文件与文件系统的压缩与打包
  12. 关于mac打开互联网下载应用提示的解决方法
  13. 初步分析AxProtector V6.40.226.200Dotnet加壳与脱壳
  14. 双因素方差分析 matlab,[转载]MATLAB的双因素有交互效应的方差分析
  15. 利用-flat.vmdk文件恢复虚拟机
  16. iOS - 微信分享无法显示好友列表
  17. 手把手教你申请计算机软件著作权(2)—— 生成代码文件身份证明
  18. NFT Insider #43 Animoca Brands完成3.58亿美元融资,微软重金收购暴雪
  19. Cesium环境 Primitives加载广告牌出现Cannot read property ‘globe‘ of undefined
  20. kubernetes dev client-go 进入pod执行命令

热门文章

  1. 山区建小学(信息学奥赛一本通-T1197)
  2. 一个数的二进制中有多少个1
  3. 38 WM配置-作业-定义库存转储和补充控制
  4. 28 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义行标识
  5. python执行shell命令行_python执行命令行:python中执行shell命令行read结果
  6. 302状态码_HTTP状态码status code详解
  7. 深度残差收缩网络:(二)整体思路
  8. HDFS概述和设计目标
  9. 面向对象的特征有哪些方面?
  10. PHP面向对象相关特性