Greasy Fork is available in English.
bilibili,B站,屏蔽首页小火箭推广视频,屏蔽广告,屏蔽左侧大图滑动推荐栏
当前为
// ==UserScript==
// @name 去你妈的批站诈骗广告
// @namespace http://tampermonkey.net/
// @version 1.4
// @description bilibili,B站,屏蔽首页小火箭推广视频,屏蔽广告,屏蔽左侧大图滑动推荐栏
// @author 爆菊大师
// @match *://*.bilibili.com/*
// @grant none
// @license MIT
// ==/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',
swipe: '.recommended-swipe.grid-anchor, .floor-single-card, .fixed-card',
feedCard: '.feed-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.swipe);
checkFeedCardMargin();
}
runAllChecks();
new MutationObserver(() => {
runAllChecks();
checkFeedCardMargin();
}).observe(document.body, { subtree: true, childList: true });
})();