Greasy Fork

Greasy Fork is available in English.

清理百度贴吧插入广告

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

当前为 2016-07-20 提交的版本,查看 最新版本

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Greasemonkey 油猴子Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Violentmonkey 暴力猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴Userscripts ,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey 篡改猴,才能安装此脚本。

您需要先安装一款用户脚本管理器扩展后才能安装此脚本。

(我已经安装了用户脚本管理器,让我安装!)

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展,比如 Stylus,才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

您需要先安装一款用户样式管理器扩展后才能安装此样式。

(我已经安装了用户样式管理器,让我安装!)

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

(function() {

	/* 删除列表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.classList.contains('j_thread_list'))
				{
					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){
				var pcss = oi.classList.contains('l_post');
				if(!pcss || pcss && !oi.attributes['data-field'])
				{
					oi.parentNode.removeChild(oi);
				}
			}
		}

	}

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

		//避免ajax加载时没有执行清理的监视滚动条方法
		window.onscroll = function(e){
			//兼容型获取滚动条高度
			var scrollTop = document.documentElement.scrollTop || window.pageYOffset || document.body.scrollTop;

			//设置滚动条范围 每10距离检查一次
			if(Number.isInteger(scrollTop/10)){
				DelTeibaListAD();
				DelTeibaPostAD();
			}
		};

	};

})();