Greasy Fork

清理百度贴吧插入广告

清理掉贴吧列表和贴子中插入的广告(轻量级)

目前为 2016-08-18 提交的版本。查看 最新版本

// ==UserScript==
// @name         清理百度贴吧插入广告
// @icon         http://www.studstu.com/fximg/delicious.gif
// @namespace    moekai.moe.cleartiebaad
// @version      0.9
// @description  清理掉贴吧列表和贴子中插入的广告(轻量级)
// @author       YIU
// @include      *://tieba.baidu.com/*
// @grant        none
// @compatible   chrome OK
// @compatible   firefox OK
// ==/UserScript==

(function() {

	//======== 你可以修改这下面的数据 ========

	//清理 1楼 下的 相关推荐(0不清理 1清理)
	var delrec = 0;

	//滚动条清理频率(如果想更快的清理,可以把数值改小,但不要小于1)
	var scrollrate = 10;



	//======== 函数区,不要修改 =======

	//--- 删除列表AD
	function DelTeibaListAD(){
		//列表区域检查
		var oa = document.getElementById('thread_list');
		if(!oa) return;

		var os = oa.children;
		var oss = os.length;

		for(var o=0; o<oss; o++)
		{
			var oi = os[o];
			if(oi){
				if(!oi.classList.contains('thread_top_list_folder') && !oi.attributes['data-field'])
				{
					oi.parentNode.removeChild(oi);
				}
			}
		}

	}

	//--- 删除贴子AD
	function DelTeibaPostAD(){
		//帖子区域检查
		var oa = document.getElementById('j_p_postlist');
		if(!oa) return;

		//对于翻页嵌套的节点选择最后一个合适的节点
		var ob = oa.childNodes;
		var os = ob[ob.length-1].className == 'p_postlist' ? ob[ob.length-1].children : oa.children;
		var oss = os.length;

		for(var o=0; o<oss; o++)
		{
			var oi = os[o];
			if(oi){
				if(!oi.attributes['data-field'] || oi.attributes['data-isautoreply'] || oi.attributes['data-field'].value.match(/user_id\":\"(.*?)\"/))
				{
					oi.parentNode.removeChild(oi);
				}
			}
		}

	}

	//--- 删除相关推荐
	function DelRecommend(){
		if(delrec < 1) return;
		var oa = document.getElementsByClassName('thread_recommend');
		if(oa.length < 1) return;
		oa[0].parentNode.removeChild(oa[0]);
	}



	//======== 主处理区,不要修改 ========

	//--- 清理第一次加载完成的页面
	window.onload = function(){
		DelTeibaListAD();
		DelTeibaPostAD();
		DelRecommend();
	};

	//--- 用滚动条进行清理
	window.onscroll = function(){
		//获取滚动条高度
		var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

		//滚动条清理频率范围
		if(Number.isInteger(scrollTop/(scrollrate < 1 ? 1 : scrollrate))){
			DelTeibaListAD();
			DelTeibaPostAD();
			DelRecommend();
		}
	};

})();