ClearDivs

试图删除网页中那些烦人的 div 元素(无意义/烦人的弹窗、提示框等)

このスクリプトの質問や評価の投稿はこちら通報はこちらへお寄せください。
// ==UserScript==
// @name         ClearDivs
// @namespace    http://freeoc.net/
// @version      0.5.0
// @description  试图删除网页中那些烦人的 div 元素(无意义/烦人的弹窗、提示框等)
// @author       Free
// @match        https://www.bilibili.com/
// @match        https://www.douyu.com/*
// @icon         data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==
// @grant        GM_xmlhttpRequest
// @license      MIT
// ==/UserScript==

(function () {
    'use strict';

    // 正则
    const patternForBili = /^(http|https):\/\/www\.bilibili\.com/;
    const patternForDy = /^(http|https):\/\/www\.douyu\.com\/.*/;

    // 当前访问的网站地址
    const currentURL = window.location.href;

    // Bilibili
    if (patternForBili.test(currentURL)) {
        const ret = ClearByClassName("adblock-tips");
        if (ret.code === 0) {
            console.log(ret.msg);
        }
    }

    // 斗鱼直播间弹窗,充值优惠提醒
    // 从命名来看可能是类似于 七月充值返厂 之类的,后续可能会失效
    if (patternForDy.test(currentURL)) {
        // 斗鱼直播间的垃圾太多,不一定能第一时间加载出来,所以可以等待3秒
        sleep(3000).then(() => {
            const ret = ClearByClassName("RechangeJulyPopups");
            if (ret.code === 0) {
                console.log(ret.msg);
            }
            // 新增屏蔽弹窗 2024.5.31
            const ret2 = ClearByClassName("RechangeJulyPopups-content");
            if (ret2.code === 0) {
                console.log(ret2.msg);
            }
        });
    }

    function ClearByClassName(className) {
        const div = document.getElementsByClassName(className);
        if (div != null && div != undefined && div.length > 0) {
            for (let i = div.length - 1; i >= 0; i--) {
                if (div[i] != null && div != undefined) {
                    div[i].parentNode.removeChild(div[i]);
                }
            }
            return { code: 1, msg: 'success' };
        } else {
            return { code: 0, msg: '该弹窗未检出,或失效' };
        }
    }

    // 睡眠函数
    function sleep(ms) {
        return new Promise(resolve => setTimeout(resolve, ms));
    }
})();