通用去广告(比较暴力,慎用)V0.1

专治广告联盟的iframe

// ==UserScript==
// @name         通用去广告(比较暴力,慎用)V0.1
// @namespace    http://tampermonkey.net/zxc/common/adblock4iframe
// @version      0.1
// @description  专治广告联盟的iframe
// @author       zxc
// @match        http*://*/*
// @grant        none
// @compatible   chrome
// @incompatible IE678
// ==/UserScript==

(function() {
    'use strict';
    blockAd();
    window.setTimeout(blockAd,1000);//防止后面加载的广告
    window.setTimeout(blockAd,5000);//防止后面加载的广告
    /************main end*************************/
    /************functions*************************/
    function blockAd (){
        //console.dir('blockAd');
        var selectors = [ 'iframe'];
        var adDoms = getElements(selectors);
        hideElements(adDoms);
    }

    function getElements (selectors){
        var adDoms = [];
        if(selectors && selectors.length){
            var ad;
            var ads;
            for(var j=0,len0=selectors.length;j<len0;++j){
                var selector = selectors[j];
                if(selector && selector.length && selector.length > 0){
                    var prefix = selector.substr(0,1);
                    var subfix = selector.length > 1 ? selector.substring(1) : '';
                    switch(prefix){
                        case '#':
                            ad = document.getElementById(subfix);//右下角.
                            ads = [ad];
                            break;
                        case '.':
                            ads =  document.getElementsByClassName(subfix);//登录提示条
                            break;
                        default:
                            ads = document.getElementsByTagName(selector);
                    }
                    joinArray(adDoms, ads);
                }
            }
        }
        return adDoms;
    }

    function joinArray(arr1,arr2){
        arr1 = arr1 || [];
        if(arr2 && arr2.length){
            for(var i=0,len=arr2.length; i<len;++i){
                arr1.push(arr2[i]);
            }
        }
        return arr1;
    }

    function hideElements (adDoms){
        if(adDoms && adDoms.length){
            for(var i=0,len=adDoms.length; i<len;++i){
                var ad = adDoms[i];
                if(ad){
                    if(ad.tagName  === 'IFRAME'){
                        var parent = ad.parentNode;
                        if(parent.firstElementChild.tagName === 'IFRAME'){// 防止藏在列表中的广告把列表也去了
                            ad = ad.parentNode;
                        }
                    }
                    if(ad && ad.style) ad.style.visibility="hidden";
                }

            }
        }
    }
    // Your code here...
})();