// ==UserScript== // @name Bangumi 评分隐藏 // @namespace https://bgm.tv/user/662064 // @version 2.3.1 // @description 隐藏Bangumi中首页、条目页、搜索页和标签页的全站评分 // @author 板斧青凤 // @match https://bgm.tv/subject/* // @match https://bangumi.tv/subject/* // @match https://bgm.tv/subject_search/* // @match https://bangumi.tv/subject_search/* // @match https://bgm.tv/ // @match https://bangumi.tv/ // @match https://bgm.tv/*/tag/* // @match https://bangumi.tv/*/tag/* // @match https://bgm.tv/*/browser* // @match https://bangumi.tv/*/browser* // @match https://bgm.tv/person/*/works* // @match https://bangumi.tv/person/*/works* // @match https://bgm.tv/user/*/timeline // @match https://bangumi.tv/user/*/timeline // @grant none // @run-at document-start // @downloadURL none // ==/UserScript== (function() { 'use strict'; function createToggleButton(text, onClick, isTagPage) { const button = document.createElement('button'); button.textContent = text; button.style.cssText = isTagPage ? 'margin: 10px;' : 'display: block; margin: 10px auto; text-align: center;'; button.addEventListener('click', onClick); return button; } function hideElements(elements) { elements.forEach(element => { element.style.display = 'none'; }); } function toggleElementsDisplay(elements, button) { const isHidden = elements[0].style.display === 'none'; elements.forEach(element => { element.style.display = isHidden ? '' : 'none'; }); button.textContent = isHidden ? '隐藏评分' : '显示评分'; } function observeAndHideElements(selectors, callback) { const observer = new MutationObserver((mutationsList, observer) => { const elements = Array.from(document.querySelectorAll(selectors)); if (elements.length > 0) { hideElements(elements); observer.disconnect(); if (typeof callback === 'function') { callback(elements); } } }); observer.observe(document.documentElement, { childList: true, subtree: true }); } function handleSubjectPage() { observeAndHideElements('div[class*="global_rating"], div[id="ChartWarpper"]', (elementsToHide) => { const ratingDiv = document.querySelector('div[rel="v:rating"]'); if (ratingDiv) { const toggleButton = createToggleButton('显示评分', () => { toggleElementsDisplay(elementsToHide, toggleButton); }, false); ratingDiv.parentNode.insertBefore(toggleButton, ratingDiv); } }); } function handleTimeline() { observeAndHideElements('.starstop-one, .fade', (elementsToHide) => { const timelineTabs = document.getElementById('timelineTabs'); if (timelineTabs) { const toggleButton = createToggleButton('显示评分', () => { toggleElementsDisplay(elementsToHide, toggleButton); }, false); const li = document.createElement('li'); li.appendChild(toggleButton); timelineTabs.appendChild(li); } }); } function handleBrowserToolsPage() { observeAndHideElements('.starstop-s, .fade', (elementsToHide) => { const browserTools = document.getElementById('browserTools'); if (browserTools) { const toggleButton = createToggleButton('显示评分', () => { toggleElementsDisplay(elementsToHide, toggleButton); }, true); browserTools.appendChild(toggleButton); } }); } if (/subject\/\d+/.test(window.location.pathname)) { handleSubjectPage(); } else if (/^\/user\/.*\/timeline/.test(window.location.pathname) || window.location.pathname === '/') { handleTimeline(); } else if ( /subject_search/.test(window.location.pathname) || /\/tag\//.test(window.location.pathname) || /\/browser/.test(window.location.pathname) || /\/person\/\d+\/works/.test(window.location.pathname) ) { handleBrowserToolsPage(); } })();