冰豆网

bingdou.net
分享网络精彩

js屏蔽广告

时间:2019-05-04加入收藏

最近遇到有些广告的问题,首先是在手机端,可能是用户访问了一些小网站的,(你懂得),然后在访问我的网站时,会带小广告过来,通常是wifi被dns劫持的情况下导入到广告脚本,cPa冰豆网
cPa冰豆网
1、处理这些要知道广告的根源,广告脚本种子基本上是动态创建script来加载的,比如百度的pos广告cPa冰豆网
处理这些需要禁止动态加载脚本,防止广告加载,

(function () {cPa冰豆网
    var createElement = document.createElement;cPa冰豆网
    document.createElement = function (tag) {cPa冰豆网
        switch (tag) {cPa冰豆网
            case 'script':cPa冰豆网
                console.log('禁用动态添加脚本,防止广告加载');cPa冰豆网
                break;cPa冰豆网
            default:cPa冰豆网
                return createElement.apply(this, arguments);cPa冰豆网
        }cPa冰豆网
    }cPa冰豆网
})();cPa冰豆网

这是一种方法,如果你的脚本也是动态加载的话就需要自己配置自己脚本的“白名单”--过滤规则cPa冰豆网
cPa冰豆网
2、另一种是通用的js广告,常见的是div嵌套iframe,就需要js清楚,话不多说

$(function() {cPa冰豆网
 cPa冰豆网
    var clearAd = {cPa冰豆网
        //由于manifest文件匹配规则只有通配没有非功能,所以可在此处添加不想删除广告的页面cPa冰豆网
        checkUrl: function() {cPa冰豆网
            var Checkflag = 0,cPa冰豆网
                url = window.location.href;cPa冰豆网
 cPa冰豆网
            //手动添加不需要清除广告的域cPa冰豆网
            var notDel = [cPa冰豆网
                "www.baidu.com",cPa冰豆网
                "taobao.com",cPa冰豆网
                "tmall.com",cPa冰豆网
                "jd.com"cPa冰豆网
            ];cPa冰豆网
 cPa冰豆网
            //正则匹配cPa冰豆网
            for (var i = 0; i < notDel.length; i++) {cPa冰豆网
                var reg = new RegExp(notDel[i], "g");cPa冰豆网
 cPa冰豆网
                if (reg.test(url)) {cPa冰豆网
                    console.log('This page does not clear ads.');cPa冰豆网
                    break;cPa冰豆网
                } else {cPa冰豆网
                    if (i == notDel.length - 1) {cPa冰豆网
                        Checkflag = 1;cPa冰豆网
                    }cPa冰豆网
                }cPa冰豆网
            }cPa冰豆网
             cPa冰豆网
            if (Checkflag == 1) {cPa冰豆网
                this.clear();cPa冰豆网
                this.findSomeAdPossible();cPa冰豆网
            }cPa冰豆网
        },cPa冰豆网
        clear: function() {cPa冰豆网
            console.log('Clear Start');cPa冰豆网
            //此处可手动添加广告框id名,去除顽疾ad必备cPa冰豆网
            var ad_id_name = [cPa冰豆网
                "cproIframe2001holder",cPa冰豆网
                "cproIframe2002holder",cPa冰豆网
                "cproIframe2003holder",cPa冰豆网
                "cproIframe2004holder",cPa冰豆网
                "cproIframe2005holder",cPa冰豆网
                "cproIframe2006holder",cPa冰豆网
                "cproIframe2007holder",cPa冰豆网
                "cproIframe2008holder",cPa冰豆网
                "cproIframe2009holder",cPa冰豆网
                "id_300x250_banner_top",cPa冰豆网
                "ads",cPa冰豆网
                "google_image_div",cPa冰豆网
                "mx_cs_71603_1261456",cPa冰豆网
                "AC_TR86_71603",cPa冰豆网
                "cproIframe_u2060917_1",cPa冰豆网
                "content_right",cPa冰豆网
                "left-promotion",cPa冰豆网
                "top_ads",cPa冰豆网
                "layerd"cPa冰豆网
            ];cPa冰豆网
 cPa冰豆网
            //此处添加广告框类名cPa冰豆网
            var ad_css_name = [cPa冰豆网
                "cproIframe_u410704_3",cPa冰豆网
                "img_ad",cPa冰豆网
                "hover_btn"cPa冰豆网
            ];cPa冰豆网
 cPa冰豆网
            for (var i = 0; i < ad_id_name.length; i++) {cPa冰豆网
                //使用remove删除节点,提升性能cPa冰豆网
                $('#' + ad_id_name[i]).remove();cPa冰豆网
            }cPa冰豆网
 cPa冰豆网
            for (var i = 0; i < ad_css_name.length; i++) {cPa冰豆网
                $('.' + ad_css_name[i]).remove();cPa冰豆网
            }cPa冰豆网
        },cPa冰豆网
        //简单的智能算法cPa冰豆网
        findSomeAdPossible: function() {cPa冰豆网
            var sap = $('div iframe'),cPa冰豆网
                ad_img = $('div script').parent().find('img,embed'),cPa冰豆网
                float_img = $('div object').parent().find('img,embed');cPa冰豆网
 cPa冰豆网
            this.arrayDel(sap, 360, 200);cPa冰豆网
            this.arrayDel(ad_img, 350, 150);cPa冰豆网
            this.arrayDel(float_img, 350, 150);cPa冰豆网
        },cPa冰豆网
        arrayDel: function(arr, conWidth, conHeight) {cPa冰豆网
            var len = arr.length;cPa冰豆网
 cPa冰豆网
            for (var i = 0; i < len; i++) {cPa冰豆网
                var self = arr.eq(i);cPa冰豆网
 cPa冰豆网
                if (self.width() <= conWidth || self.height() <= conHeight) {cPa冰豆网
                    self.remove();cPa冰豆网
                }cPa冰豆网
 cPa冰豆网
            }cPa冰豆网
        },cPa冰豆网
        init: function() {cPa冰豆网
            this.checkUrl();cPa冰豆网
        }cPa冰豆网
    }cPa冰豆网
 cPa冰豆网
    $(document).ready(function() {cPa冰豆网
        clearAd.init();cPa冰豆网
 cPa冰豆网
        //为防止ajax异步延时加载的广告隔4s再清除一次cPa冰豆网
        setTimeout(function() {cPa冰豆网
            clearAd.init();cPa冰豆网
        }, 4000)cPa冰豆网
    });cPa冰豆网
})cPa冰豆网

引入这个文件可以过滤大部分的广告,其他的还需要继续完善广告。

TGA:

分享到:

官方微信二维码冰豆网官方微信公众号