Greasy Fork is available in English.
隐藏Bangumi中首页、条目页、搜索页和标签页的全站评分
当前为
// ==UserScript==
// @name Bangumi 评分隐藏
// @namespace https://bgm.tv/user/662064
// @version 2.3.0
// @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
// ==/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\/\d+\/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();
}
})();