由于我们网站上的广告经常被一些广告插件给屏蔽掉,上级给我下达了一个检测浏览器是否安装了屏蔽广告的插件的任务。

经过研究,借鉴,参考,整合了如下三种解决方案。

  方案一:

利用广告插件通过对含有google-ad,testad,ad等,带ad的敏感词汇的dom元素进行屏蔽的方式寻找突破口,我模拟了一个<div class="google-ad">这里是一个广告位</div>将这个div加载在页面的dom节点的最顶端,发现所有的广告插件,都能检测到这个广告位并且采用dispaly:none,或者将div的高度塌陷变为0,于是我们有了下面的方法。

在页面顶部加上<div class="google-ad testAd"> 这里是一个广告位</div>,然后加入如下代码:

<script src="jquery.min.js"></script>
<script>
$(function(){
if($('.google-ad').height()==0 || $('.google-ad').css('display') == 'none'){
console.log($('.google-ad').height());
console.log($('.google-ad').css('display'));
alert('您的浏览器安装了屏蔽广告的插件Adblock,or uBlock Origin,要使您能够正常使用网站请先屏蔽浏览器上的相关的广告屏蔽插件。');
} })
</script>

        方案二:

模拟动态加载一个广告(ads.js)的方式,如果安装了广告插件,则这个广告js(ads.js)不会被加载成功。

新建一个空白的ads.js文件。

在页面上写上如下代码:

 <script src="jquery.min.js"></script>
<div style="text-align:center;clear:both;">
<script>
$(function(){
$.ajax({
url: "ads.js",
dataType: "script"
}).fail(function () {
alert('您的浏览器安装了屏蔽广告的插件Adblock,or uBlock Origin,要使您能够正常使用网站请先屏蔽浏览器上的相关的广告屏蔽插件。');
});
})
</script>

    方案三:

参照网上一位仁兄写的代码,亲测有效。项目地址:https://github.com/sitexw/FuckAdBlock。

方案四:逆向思维

        要想自己网站上的广告位图片不被屏蔽掉,网站上加载的广告js能够正常加载,就不要使用能够被广告插件轻易读取识别的命名规则去命名广告了。

  这个问题的解决方法,再次检验了一个实用方法论:当苦苦思索的方法解决不了问题时,不妨转化思路可以采取迂回的战术间接寻求问题的解决方法。

如何检测浏览器是否安装了Adblock,uBlock Origin,Adguard,uBlock等广告屏蔽插件的更多相关文章

  1. adblockTester通过js检测用户浏览器是否安装了AdBlock

    adblockTester 简介 首先有必要介绍一下AdBlock,它是一款知名网页广告屏蔽插件,在各大主流浏览器上均有AdBlock插件. AdBlock为用户带来了一片蓝天,却苦了站长,尤其是苦逼 ...

  2. 怎样检测浏览器是否安装了某个插件, 比如flash

    首先, 我们可以获取浏览器安装的所有在插件: navigator.plugins 它会返回一个类似数组的对象, 包含所有已安装插件的具体信息. navigator.plugins; 然后我们可以通过正 ...

  3. 谷歌浏览器安装adblock广告屏蔽插件

    访问不到google的应用商店的话,就从网上直接查找adblock for chrome.打开浏览器的开发者模式,下载解压后直接拖拽到浏览器即可.下载地址http://www.cr173.com/so ...

  4. Google广告屏蔽插件adBlock

    今天在博客园写博客的时候发现莫名其妙的在右侧被植入了广告,询问了管理员得知存在以下几种可能: 1.电信网络供应商劫持网页,植入广告 2.ADSafe(是一款去除广告的软件,效果很不错) 但经过最终排除 ...

  5. 判断客户端浏览器是否安装了Flash插件

    <script> /*检测浏览器是否安装了插件(在IE 中无效)*/ function hasPlugin(name){ name = name.toLowerCase(); for(va ...

  6. js检测浏览器中是否安装了flash播放插件

    这两天工作中需要在网页中嵌入flash小游戏,我使用的是swfobject.js version:1.5.其他方面都很好,唯独版本检测这里一直没有搞通,后来实在无奈之下,改用js来检测浏览器的flas ...

  7. 检测Office是否安装以及获取安装 路径 及安装版本 QQ,迅雷,旺旺 C#代码

    #region 检测Office是否安装 ///<summary> /// 检测是否安装office ///</summary> ///<param name=" ...

  8. navigator,JS检测浏览器插件

    最早由Netscape Navigator 2.0引入的navigator对象,现在已经成为识别客户端浏览器的事实标准.虽然其它浏览器也通过其它方式提供了相同或相似的信息(例如,IE中的window. ...

  9. JS检测浏览器Adobe Reader插件

    Web应用中当我们希望向用户显示pdf文档时候,如果用户安装了Adobe Reader之类的pdf阅读器,就可以直接打开文档在浏览器中显示, 但是,当用户没有安装这类软件的时候,自然是打不开的,为了系 ...

随机推荐

  1. mysql -- 一次执行多条sql语句

    最近要做一个软件升级,其中涉及到数据库表字段的变动(新增或删除或修改),所有的关于数据库的变动的sql语句都是存放在Sqlupdate.sql文件中,每次升级的时候都需要执行一次Sqlupdate.s ...

  2. Android SDK代理server解决国内不能更新下载问题

    读者须知:本篇文章中最靠谱的是第三种方式,近期有读者反映第三种方式也不行了,以下提供一点其它途径的开源镜像网站: 国内高校的开源镜像站 中国科学技术大学(debian.ustc.edu.cn) 上海交 ...

  3. css 动画

    CSS3动画相关的几个属性是:transition, transform, animation:我分别理解为过渡,变换,动画.虽意义相近,但具体角色不一.就像是SHE组合,虽然都是三个女生,都唱同一首 ...

  4. C# 压缩和解压文件(SharpZipLib)

    先从网上下载ICSharpCode.SharpZipLib.dll类库 将文件或文件夹压缩为zip,函数如下 /// <summary> /// 压缩文件 /// </summary ...

  5. angularJs多文件上传

    <input type="file" id="file{{$index}}" class="file{{$index}}" ngf-s ...

  6. Hibernate_day01--课程安排_Hibernate概述_Hibernate入门

    Hibernate_day01 Hibernate课程安排 今天内容介绍 WEB内容回顾 JavaEE三层结构 MVC思想 Hibernate概述 什么是框架 什么是hibernate框架(重点) 什 ...

  7. 应用开发之Linq和EF

    本章简言 上一章笔者对于WinForm开发过程用到的几个知识点做了讲解.笔者们可以以此为开端进行学习.而本章我们来讲一个跟ORM思想有关的知识点.在讲之前让我们想一下关于JAVA的hibernate知 ...

  8. 非IE图片上传预览

    $("#uploadFiles").change(function (e) {                if (e.target.files) {               ...

  9. 《从零开始学Swift》学习笔记(Day 68)——Cocoa Touch设计模式及应用之响应者链与触摸事件

    原创文章,欢迎转载.转载请注明:关东升的博客 应用与用户进行交互,依赖于各种各样的事件.事件响应者对象是可以响应事件并对其进行处理的对象,响应者链是由一系列链接在一起的响应者组成的.响应者链在事件处理 ...

  10. Tomcat Server启动报错:Multiple Contexts have a path of "/east".

    原因是 conf/server.xml 文件中多了一个<Context></Context>标签,路径有重复,把他删掉就好了.