取消所有timeout(chrome插件小试-推荐以及广告去除)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Dead_Rabbit6_0/article/details/77148257

chrome去百度广告插件

嗯…在开发的时候遇到个问题,就是在遍历删除所有百度广告之后(因为百度广告部分div的className多变,所以采用排除法),广告会再次出现,看控制台,显示的是timeout的警告信息;

这里用到取消timeout,可是市面上大多是根据timeout的id号来操作(clearTimeout),翻百度翻的不耐烦,所以查了下谷歌…要不说国际大公司呢

// 取消所有 timeout
var highestTimeoutId = setTimeout(";");
for (var i = 0 ; i < highestTimeoutId ; i++) {
    clearTimeout(i); 
}

这样,就可以取消所有的timeout了~

下面放上插件的核心代码…写的比较烂…嗯…这个去广告只对网址进入搜索的时候管用

manifest.json:

{
  "name": "百度清洁计划",
  "manifest_version": 2,
  "version": "1.0",
  "description": "to my lover CassieLin",
  "browser_action": {
    "default_icon": "icon.png"
  },
  "content_scripts": [
    {
      "matches": ["https://www.baidu.com/s*"],
      "js": ["bg.js"]
    }
  ]
}

mainifest.json 中的 icon.png 是图标,matches中是匹配到的网址,/s* 是在搜索网址中过滤,最好加上/s*,不然在百度跳转网址里面会报错造成程序无法继续,bg.js是核心代码

bg.js:

var contents = ["s_wrap","content_right","u","s_icons","leftBlock"];
var ads = ["leftBlock"];
/*
	取消 右侧推荐内容
*/
cancelItems();
function cancelItems(){
	for(var i in contents){
		if(document.getElementById(contents[i]) != null){
			var one = document.getElementById(contents[i]);
			one.parentNode.removeChild(one);
		}
	}
}
// 取消所有 timeout
var highestTimeoutId = setTimeout(";");
for (var i = 0 ; i < highestTimeoutId ; i++) {
    clearTimeout(i); 
}
/*
	取消 广告内容
*/
cleanAD();
function cleanAD(){
	// var m_childs = document.getElementById("content_left").getElementsByTagName("div");
	var m_childs = getChildren(document.getElementById("content_left"), 'div');
	for(var i in m_childs){
		if(m_childs[i].getAttribute("class")==null)
			continue;
		if(m_childs[i].getAttribute("class").indexOf("result") < 0)
			m_childs[i].parentNode.removeChild(m_childs[i]);
	}
	for(var i in ads){
		if(document.getElementsByClassName(ads[i]).length > 0){
			var oneItems = document.getElementsByClassName(ads[i]);
			for(var i in oneItems){
				oneItems[i].parentNode.removeChild(one);
			}
		}
	}
}
// 获取一级div子元素
function getChildren(obj, tag){
    var objChild = [] ;
    var objs = obj.getElementsByTagName(tag);
    for(var i=0,j=objs.length; i<j;++i){
        if(objs[i].nodeType != 1){alert(objs[i].nodeType);
            continue ;
        }
        var temp = objs[i].parentNode;
        if(temp.nodeType == 1){
            if(temp == obj){
                objChild[objChild.length] = objs[i] ;
            }
        }else if(temp.parentNode == obj){
            objChild[objChild.length] = objs[i] ;
        }
    }
    return objChild ;
}

到时候把文件夹拖拽到谷歌浏览器的拓展程序里就好了

展开阅读全文

没有更多推荐了,返回首页