// ==UserScript== // @name B站直播去马赛克 // @namespace https://live.bilibili.com // @version 1.1.0 // @description 移除B站游戏分区直播自动添加的马赛克遮罩层(我的世界/守望先锋/原神等分区适用) // @author 自定义 // @match *://live.bilibili.com/* // @match *://*.live.bilibili.com/* // @grant GM_addStyle // @run-at document-start // @license MIT // ==/UserScript== (function () { 'use strict'; // ========== 方法一:CSS 强制隐藏(最稳妥,页面加载即生效) ========== const hideCss = ` /* 主遮罩容器 —— 分区自动马赛克 */ .web-player-module-area-mask, .web-player-module-area-mask-panel { width: 0 !important; height: 0 !important; opacity: 0 !important; display: none !important; pointer-events: none !important; } /* 兼容新版播放器可能的类名变化 */ div[class*="area-mask"], div[class*="mask-panel"] { width: 0 !important; height: 0 !important; display: none !important; } `; // 注入样式(兼容油猴 / ScriptCat) if (typeof GM_addStyle !== 'undefined') { GM_addStyle(hideCss); } else { const style = document.createElement('style'); style.textContent = hideCss; (document.head || document.documentElement).appendChild(style); } // ========== 方法二:DOM 节点监听移除(兜底,防止动态插入新遮罩) ========== const maskSelectors = [ '.web-player-module-area-mask', '.web-player-module-area-mask-panel', 'div[class*="area-mask"]' ]; function removeMaskElements() { maskSelectors.forEach(selector => { document.querySelectorAll(selector).forEach(el => { if (el && el.parentNode) { el.parentNode.removeChild(el); } }); }); } // 页面加载完成后先清理一次 if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', removeMaskElements); } else { removeMaskElements(); } // 使用 MutationObserver 持续监听 DOM 变化(直播切分区/刷新播放器时会重新插入遮罩) const observer = new MutationObserver(() => { removeMaskElements(); }); observer.observe(document.documentElement, { childList: true, subtree: true }); console.log('[B站直播去马赛克] 脚本已启用'); })();