修改 targetTextArray 数组添加不想看到的。
// ==UserScript==
// @name 隐藏时间表不想看到的行
// @namespace http://tampermonkey.net/
// @version 2024-11-10
// @description 修改 targetTextArray 数组添加不想看到的。
// @author You
// @match https://tracker.beartoolkit.com/timer
// @icon https://www.google.com/s2/favicons?sz=64&domain=beartoolkit.com
// @grant none
// ==/UserScript==
(function() {
'use strict';
// 输入不想看的 S/A怪,或者 Fate
const targetTextArray = [
"努纽努维",
"卢克洛塔",
];
// 检查并隐藏符合条件的节点
function checkAndHideNodes() {
// 查找所有的 MuiTypography-root 元素
const typographyNodes = document.querySelectorAll('.MuiTypography-root.MuiTypography-button');
typographyNodes.forEach(node => {
const nodeText = node.textContent.trim();
// 检查当前节点的文本是否在目标文本数组中
if (targetTextArray.includes(nodeText)) {
let parentNode = node;
// 循环判断父节点,直到找到包含 MuiTableRow-root 的父节点
while (parentNode && !parentNode.classList.contains('MuiTableRow-root')) {
parentNode = parentNode.parentElement;
}
// 如果找到了包含 MuiTableRow-root 的父节点
if (parentNode && parentNode.classList.contains('MuiTableRow-root')) {
parentNode.style.display = 'none'; // 隐藏该行
}
}
});
}
// 监听元素的变化(包括属性、文本内容、子节点)
function observeElementChanges(siblingSpan) {
const observer = new MutationObserver(mutations => {
mutations.forEach(mutation => {
if (mutation.type === 'childList') {
console.log(`子节点变化:`, mutation);
} else if (mutation.type === 'attributes') {
console.log(`属性变化:`, mutation);
} else if (mutation.type === 'characterData') {
console.log(`文本内容变化:`, mutation.target.textContent.trim());
}
checkAndHideNodes()
});
});
// 配置观察者监听子节点变化、属性变化和文本内容变化
const config = {
childList: true, // 监听子节点的添加或删除
attributes: true, // 监听元素的属性变化
characterData: true, // 监听文本节点的变化
subtree: true, // 监听所有后代元素的变化
};
// 开始监听兄弟 span 的变化
observer.observe(siblingSpan, config);
}
// 找到所有符合条件的 targetSpan 元素
function findTargetSpans() {
const targetSpans = document.querySelectorAll('span[aria-label="显示已死亡猎物"]');
// 如果找到了符合条件的 targetSpan 元素,返回 true
if (targetSpans.length > 0) {
console.log('找到目标 span 元素');
targetSpans.forEach(targetSpan => {
// 获取目标 span 的父节点 (假设所有兄弟都在同一个父容器内)
const parentElement = targetSpan.parentElement;
if (parentElement) {
console.log('找到目标 span 的父容器');
// 获取所有兄弟 span 元素并监听它们的变化
const siblingSpans = parentElement.querySelectorAll('span');
siblingSpans.forEach(siblingSpan => {
observeElementChanges(siblingSpan); // 为每个兄弟 span 监听变化
});
}
});
return true;
}
return false;
}
// 定时器检查函数
function startCheckingForTableBodyElement() {
const intervalId = setInterval(() => {
if (findTargetSpans()) {
clearInterval(intervalId); // 找到元素后停止定时器
}
}, 1000); // 每1s检查一次
}
// 启动定时器检查
startCheckingForTableBodyElement();
})();