1
0
Fork 0
UserScript/baidu/clearAd.user.js

97 lines
2.8 KiB
JavaScript

// ==UserScript==
// @name 百度广告去除
// @namespace http://ide.yumc.pw/
// @version 0.0.8
// @description 去除百度上下推广广告
// @author MiaoWoo
// @include http*://*.baidu.*
// @grant none
// @namespace yumc
// ==/UserScript==
(function() {
'use strict';
var selectors = `
#content_left [style*="display:block !important;visibility:visible !important"]
[tpl="right_toplist"]
[class="c-gray c-feedback"]
`;
selectors = selectors.trim().split('\n');
var count = 0;
function clearDom(dom){
if(dom.parentNode){
dom.parentNode.removeChild(dom);
}
}
function showCount(cn){
if(cn>0){
count += cn;
var content_right = document.querySelector('#content_right');
if(content_right){
content_right.style.position = 'relative';
var style = `
line-height: 42px;
text-align: center;
background: #0c0;
color: #fff;
margin-bottom:30px;
`;
var msgCount = document.querySelector('#msg-remove');
if(!msgCount){
content_right.insertAdjacentHTML('afterbegin','<div id="msg-remove" style="'+style+'"></div>');
msgCount = document.querySelector('#msg-remove');
}
msgCount.innerHTML = `已过滤 ${count}条垃圾广告 本次过滤:${cn}`;
}
}
}
function clearResult(){
var count = 0;
selectors.forEach(function(selector) {
var doms = document.querySelectorAll(selector);
if(doms.length){
doms = Array.from(doms);
count += doms.length;
doms.forEach(dom => clearDom(dom));
}
});
return count;
}
function clearByTag(){
var count = 0;
var adKeyword = ['广告', '评价']
var classKeyWord = ['m', 'a span']
classKeyWord.forEach(function (c) {
Array.from(document.getElementsByClassName(c)).forEach(function (element) {
if (adKeyword.indexOf(element.innerText) > -1){
clearDom(element.parentNode.parentNode)
count++
}
});
})
return count;
}
function clearByClass(){
var count = 0;
Array.from(document.getElementsByClassName('ad-block')).forEach(function (element) {
clearDom(element.parentNode.parentNode.parentNode)
count++
})
return count;
}
function clear() {
var tempCount = 0
tempCount += clearResult();
tempCount += clearByTag();
tempCount += clearByClass();
showCount(tempCount);
}
//setTimeout(function(){clear();}, 500);
setInterval(function(){clear();}, 500);
})();