删除共创世界(CCW)社区的作品游玩页上的录制按钮
// ==UserScript==
// @name 删除共创世界(CCW)录制按钮
// @namespace https://greasyfork.org/zh-CN/scripts/474834
// @version 1.6
// @description 删除共创世界(CCW)社区的作品游玩页上的录制按钮
// @match *://ccw.site/detail/*
// @match *://www.ccw.site/detail/*
// @grant none
// @license MIT
// ==/UserScript==
(function() {
'use strict';
const TEXT_TO_FIND = "录制"; // 要查找的按钮内文本
// 录制按钮的直接父容器的选择器 (基于您提供的HTML结构)
const RECORD_BUTTON_WRAPPER_SELECTOR = 'div.control-record-2NoqJ.action-start-bMuJy';
// 录制按钮本身的选择器 (在父容器内,并且包含文字 "录制")
const RECORD_BUTTON_ITSELF_SELECTOR = 'div.action-item-P9SP6';
/**
* 查找并移除目标按钮。
* @returns {boolean} 如果找到并移除了按钮则返回 true,否则返回 false。
*/
function findAndRemoveRecordButton() {
// 查找所有可能的录制按钮的父容器
const wrapperElements = document.querySelectorAll(RECORD_BUTTON_WRAPPER_SELECTOR);
for (const wrapper of wrapperElements) {
// 在每个父容器中查找实际的录制按钮 div
const buttonElements = wrapper.querySelectorAll(RECORD_BUTTON_ITSELF_SELECTOR);
for (const buttonElement of buttonElements) {
const span = buttonElement.querySelector('span');
// 检查 span 是否存在并且其文本内容是否为 "录制"
if (span && span.textContent.trim() === TEXT_TO_FIND) {
// 找到了目标按钮,进行移除
console.log('找到录制按钮,准备移除:', buttonElement);
buttonElement.remove();
console.log('录制按钮已移除。');
return true; // 表示已成功找到并移除
}
}
}
return false; // 未找到按钮
}
// 首次尝试:页面加载时立即执行一次查找和移除
if (findAndRemoveRecordButton()) {
console.log('录制按钮在页面初始加载时被移除。');
// 如果按钮只出现一次且不会重新加载,可以考虑在这里直接返回,不启动Observer
// return;
}
// 定义 MutationObserver 的回调函数
const observerCallback = function(mutationsList, observer) {
// 每次DOM变化时,都尝试查找并移除按钮
if (findAndRemoveRecordButton()) {
console.log('录制按钮通过 MutationObserver 移除。');
observer.disconnect(); // 成功移除后,停止监听,避免不必要的性能消耗
console.log('MutationObserver 已停止。');
}
};
// 创建 MutationObserver 实例
const observer = new MutationObserver(observerCallback);
// 配置 MutationObserver 监听的选项
const observerConfig = {
childList: true, // 监听子节点(包括文本节点)的添加或删除
subtree: true, // 监听目标节点所有后代节点的变化
};
// 开始监听 document.body 的变化
// 这样可以捕获到页面上任何地方动态添加的符合条件的按钮
observer.observe(document.body, observerConfig);
console.log('移录制按钮脚本已启动,并开始监听页面变化。');
})();