如何使用Greasemonkey将包含day的多类名元素修改为仅保留day类
实现代码
以下是兼容Greasemonkey、Tampermonkey、Violentmonkey等主流脚本管理器的完整脚本:
// ==UserScript== // @name 仅保留日期元素的day类 // @namespace http://tampermonkey.net/ // @version 1.0 // @description 所有带day类的元素仅保留day类名,清除其他附加类 // @match *://你要运行脚本的站点域名/* // @grant none // ==/UserScript== (function() { 'use strict'; // 核心处理逻辑 function clearExtraClassForDayElements() { // 选择所有类名包含day的元素 // 如果要避免误选类名含day子串的元素,可将 * 改为 ~,即 [class~="day"] const dayElements = document.querySelectorAll('[class*="day"]'); dayElements.forEach(element => { // 直接重写类名为day,清除所有其他类 element.className = 'day'; }); } // 页面静态内容加载完成后执行一次 document.addEventListener('DOMContentLoaded', clearExtraClassForDayElements); // 可选:如果目标元素是动态渲染的(比如异步加载的日历组件),添加变动监听 const observer = new MutationObserver(() => { clearExtraClassForDayElements(); }); observer.observe(document.body, { childList: true, subtree: true }); })();
使用说明
- 把脚本中
@match后面的站点地址替换为你实际要运行的页面地址,避免在所有站点生效 - 如果你确定目标元素都是页面初始加载就有的,可以删除末尾MutationObserver相关的代码,减少性能消耗
- 选择器
[class*="day"]是匹配所有类名含day子串的元素,如果你要只匹配有独立day类的元素,改成[class~="day"]即可,后者只会匹配空格分隔的类列表中完全等于day的项,精准度更高
内容的提问来源于stack exchange,提问作者Wahyudi Nafii
相关产品推荐
相关产品推荐

