Greasy Fork is available in English.
bilibili,B站,去广告,屏蔽小火箭推广视频,屏蔽首页左侧大图滚动推荐栏
当前为
// ==UserScript==
// @name 去你妈的批站诈骗广告
// @version 1.5
// @description bilibili,B站,去广告,屏蔽小火箭推广视频,屏蔽首页左侧大图滚动推荐栏
// @author 爆菊大师
// @match *://*.bilibili.com/*
// @grant none
// @license MIT
// @namespace http://tampermonkey.net/
// ==/UserScript==
(function () {
'use strict';
const selectors = {
pseudo: '.bili-video-card.is-rcmd',
icons: '.vui_icon.bili-video-card__stats--icon',
adFeed: '.bili-video-card__mask .bili-video-card__stats--text',
skeleton: '.bili-live-card.is-rcmd.enable-no-interest .bili-live-card__skeleton.hide',
feedCard: '.feed-card',
adBanners: '.ad-report.ad-floor-exp.left-banner, .activity-m-v1.act-end, .video-card-ad-small, .slide-gg, .recommended-swipe.grid-anchor, .floor-single-card, .fixed-card'
};
function adjustStyle(element, property, value) {
element.style[property] = value;
}
function checkFeedCardMargin() {
document.querySelectorAll(selectors.feedCard).forEach(el => {
const margin = window.getComputedStyle(el).marginTop;
if (margin === '40px') adjustStyle(el, 'marginTop', '0');
});
}
function hideElement(element) {
adjustStyle(element, 'display', 'none');
}
function isBlocked(element) {
const content = window.getComputedStyle(element, '::before').content;
return content.includes('AdGuard') || content.includes('AdBlock');
}
function checkElements(selector, condition, parentSelector) {
document.querySelectorAll(selector).forEach(el => {
const target = parentSelector ? el.closest(parentSelector) : el;
if (target && (!condition || condition(el))) hideElement(target);
});
}
function runAllChecks() {
checkElements(selectors.pseudo, el =>
isBlocked(el) || Array.from(el.children).some(isBlocked)
);
checkElements(selectors.icons, null, '.bili-video-card');
checkElements(selectors.adFeed, el =>
el.textContent.includes('广告'), '.bili-video-card__wrap'
);
checkElements(selectors.skeleton, null, '.bili-live-card');
checkElements(selectors.adBanners);
checkFeedCardMargin();
}
runAllChecks();
new MutationObserver(() => {
runAllChecks();
checkFeedCardMargin();
}).observe(document.body, { subtree: true, childList: true });
})();