Greasy Fork

Greasy Fork is available in English.

隐藏B站"充电专属"内容

隐藏B站"充电专属"内容,适配动态页面

当前为 2024-10-04 提交的版本,查看 最新版本

// ==UserScript==
// @name         隐藏B站"充电专属"内容
// @namespace    http://tampermonkey.net/
// @version      1.13
// @description  隐藏B站"充电专属"内容,适配动态页面
// @author       chemhunte
// @match        https://t.bilibili.com/*
// @match        https://space.bilibili.com/*
// @grant        none
// @license      GPL-3.0 License
// ==/UserScript==

(function() {
    'use strict';

    // 创建一个用于显示提示信息的元素
    const messageDiv = document.createElement('div');
    Object.assign(messageDiv.style, {
        position: 'fixed',
        top: '10px',
        right: '10px',
        padding: '10px',
        backgroundColor: 'rgba(0, 0, 0, 0.7)',
        color: 'white',
        borderRadius: '5px',
        zIndex: '9999',
        display: 'none'
    });

    document.body.appendChild(messageDiv);

    function checkForChargingExclusive() {
        const items = document.querySelectorAll('.bili-dyn-list__item');
        let hasHiddenItems = false; // 用于跟踪是否隐藏了任何项

        items.forEach(item => {
            const badge = item.querySelector('.bili-dyn-card-video__badge');
            const specialTitle = item.querySelector('.dyn-blocked-mask__msg-title');
            const spans = item.querySelectorAll('span'); // 查找所有 span 元素
            const lotteryTitle = item.querySelector('.dyn-upower-lottery__title'); // 查找抽奖标题

            // 逐个条件检查
            if (badge && badge.textContent.includes('充电专属')) {
                item.style.display = 'none';
                hasHiddenItems = true;
            } else if (specialTitle && specialTitle.textContent.includes('专属动态')) {
                item.style.display = 'none';
                hasHiddenItems = true;
            } else if (Array.from(spans).some(span =>
                span.textContent.includes('充电专属问答')
            )) {
                item.style.display = 'none';
                hasHiddenItems = true;
            } else if (lotteryTitle && lotteryTitle.textContent.includes('专属抽奖')) {
                item.style.display = 'none';
                hasHiddenItems = true;
            }
        });

        // 如果有隐藏项,显示提示信息
        if (hasHiddenItems) {
            showMessage("'充电专属' 内容隐藏");
        }
    }

    function showMessage(msg) {
        messageDiv.textContent = msg;
        messageDiv.style.display = 'block';

        // 设置定时器在一段时间后隐藏消息
        setTimeout(() => {
            messageDiv.style.display = 'none';
        }, 3000);
    }

    // 使用MutationObserver监视DOM变化
    const observer = new MutationObserver(checkForChargingExclusive);

    // 配置观察选项
    observer.observe(document.body, {
        childList: true, subtree: true
    });

    // 初始检查
    checkForChargingExclusive();
})();