Greasy Fork is available in English.

从Google Baidu Bing搜索结果中屏蔽卡饭教程

从Google Baidu Bing Haosou Youdao搜索结果中屏蔽'卡饭教程'

Versión del día 21/11/2015. Echa un vistazo a la versión más reciente.

// ==UserScript==
// @name 从Google Baidu Bing搜索结果中屏蔽卡饭教程
// @namespace BlockKafanTopicinGoogle
// @include /^https?\:\/\/encrypted.google.[^\/]+/
// @include /^https?\:\/\/www.google.[^\/]+/
// @include /^https?\:\/\/www.baidu.[^\/]+/
// @include /^https?\:\/\/[\w]+.bing.[^\/]+/
// @include /^https?\:\/\/www.haosou.com+/
// @include /^https?\:\/\/www.youdao.com/
// @icon    https://coding.net/u/zb227/p/zbImg/git/raw/master/icon.jpgg
// @author       AC
// @version 0.2.4
// @description 从Google Baidu Bing Haosou Youdao搜索结果中屏蔽'卡饭教程'
// @grant none

// ==/UserScript==
//===================================================特殊规则处理=======================================================
/***用于干掉某些不属于普通规则的模块,可以自己仿照格式添加**/
//var sepcStr1_USELESS=new Array("待删除目的URL", "待删除网址的class", "待删除网址对应最终块的class");
var sepcStr1=new Array("rj.baidu.com","c-showurl", "result-op c-container"); //百度软件推广
tryto_del_specificEle(sepcStr1[0], sepcStr1[1], sepcStr1[2], sepcStr1[3]);

//===================================================普通规则变量定义=======================================================
/*
变量x用于baidu-google-bing-haosou-youdao
就是网址的黑名单的意思~~,--不显示该名单中的网址
*/
var x=new Array(
	"kafan.cn/topic",
	"www.kafan.cn › 卡饭教程"
);

//网址节点的最近父节点 百度、必应、谷歌、好搜、有道--->用来尽可能的保证不卡死浏览器
var dir_fatherName = new Array("f13",                 "b_attribution", "f kv _SWb", "res-linkinfo", "result-footer", "fb"); 
//网址节点的最终父节点-一一对应
var end_fatherName = new Array("result c-container ", "b_algo",         "g",        "res-list",     "rnw default",   "rbvrwrap"); 
var map={};
initMap();

//===================================================主入口=======================================================
document.addEventListener('DOMNodeInserted',blockKafanBaidu,false);
function blockKafanBaidu() {
    var isBaidu = (location.href.indexOf('.baidu.com') > -1);
    var citeList;
    if(isBaidu){
        citeList = document.getElementsByClassName('g');  //之前取的是g,但这个标签在google中是最大的标签,导致谷歌页面卡住,所以先判断是baidu站点
        deal(citeList)
    }else{
        citeList = document.getElementsByTagName('cite');  // 其他的几个搜索貌似都是以cite为TAG的
        deal(citeList)
    }
}

function deal(citeList){
    for (var index = 0; index < citeList.length; index++) {
        var element = replaceAll(citeList[index].innerHTML);

        if (checkIndexof(element)) {
            var node = citeList[index].parentNode;
            var cur_dir_fatherName = node;
            if(is_dir_fatherNode(cur_dir_fatherName.className)){
                    //alert(element);
                for(var index=0; index <= 5; index++){
                    node = node.parentNode;
                    //alert(node.className+"   "+ map[cur_dir_fatherName.className]);
                    if(isequal(node.className, map[cur_dir_fatherName.className])){
                        break;
                    }
                }
            }
            if(index <= 5)
                node.parentNode.removeChild(node);
        }
    }
}
function initMap(){
    var length = dir_fatherName.length;
    for(var i = 0; i < length; i++){
        var a = dir_fatherName[i];
        var b = end_fatherName[i];
        map[a] = b;
    }
}
// 从最终节点中查询是否有最低节点对应的值(当前末尾值, Map里的最终值),这样就可以使用一对多了例如:"fb"-"rb" =====>> "fb"->"rb"
function isequal(cur_end, map_end){ 
    if(map_end.indexOf(cur_end) > -1)
        return true;
    return false;
}
// 遍历Array,判断网址父节点是应该属于列表中的
function is_dir_fatherNode(node){
    var leng = dir_fatherName.length;
    for(var i = 0; i < leng; i++){
        if(node.indexOf(dir_fatherName[i]) > -1){
            return true;
        }
    }
    return false;
}
/**
url_d 被删除的地址url
spec_d 被删除节点的Class名字
spec_f_d 被删除节点的总的父亲节点的Class名字
index_d 节点到父节点的层数
*/
function tryto_del_specificEle(url_d, spec_d, spec_f_d, index_d){
		//alert('删除ing '+spec_d);
		index--;
		var citeList2 = document.getElementsByClassName(''+spec_d);
		for(var index = 0; index < citeList2.length; index++){
		var ele = replaceAll(citeList2[index].innerHTML);
		if((ele.indexOf(''+url_d)>-1)){
			var node = citeList2[index].parentNode;
			for(var index2 = 0; index2 <= 4; index2++){
				node = node.parentNode;
				//alert(node.className);
				if(node.className == spec_f_d){
						 break;
				}
			}
			if(index2 <= 4)
				node.parentNode.removeChild(node);
		}
	}
}
/*去掉网址中的<xxx>*/
function replaceAll(sbefore){
	var send;
	send = sbefore.replace(/<[^>]*>/g ,"");
	return send;
}
/*确认是当前例子的一个子例*/
function checkIndexof(element){
	var result = (element.indexOf(x[0]) > -1);
	for(var i = 1; i <= x.length; i++){
		//alert("check");
		result = result || (element.indexOf(x[i]) > - 1);
	}
	return result;
}