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 ;
}
到时候把文件夹拖拽到谷歌浏览器的拓展程序里就好了