如何使用Tampermonkey脚本修改无ID的HTML元素的style和onclick属性
Tampermonkey 脚本实现方案
直接使用下方完整脚本即可,已适配你提到的场景需求:
// ==UserScript== // @name 修复游戏站点禁用按钮 // @namespace http://tampermonkey.net/ // @version 0.1 // @description 自动修复学习站点被禁用的游戏启动按钮 // @match *://你的游戏站点域名/* // 这里替换成你实际的站点域名 // @grant none // ==/UserScript== (function() { 'use strict'; // 待匹配的原始禁用按钮style属性值,完全匹配即可定位 const DISABLED_BTN_STYLE = "border:outset;font-size:14px;background-color:darkgrey;color:white;"; // 轮询检测间隔,单位毫秒,300ms可兼顾实时性和性能 const CHECK_INTERVAL = 300; function fixButtons() { // 定位所有符合禁用样式、且未被修复过的label按钮 const disabledBtns = document.querySelectorAll(`label[style="${DISABLED_BTN_STYLE}"]:not([data-fixed])`); if (disabledBtns.length === 0) return; disabledBtns.forEach(btn => { // 处理当前Car Puzzle按钮,其他按钮可按照这个逻辑修改判断条件 if (btn.textContent.includes("Car Puzzle (2 pts)")) { // 修改onclick属性,移除开头的x btn.setAttribute("onclick", btn.getAttribute("onclick").replace(/^x/, "")); // 覆盖为目标style,已修正原示例里width的等号为CSS规范的冒号 btn.setAttribute("style", "width:100%;border:outset;font-size:14px;color:blue;"); // 加自定义标记避免重复修改 btn.dataset.fixed = "true"; } // 其他3个按钮可以在这里加else if分支,匹配对应按钮文本即可 // else if (btn.textContent.includes("其他按钮文本")) { // 对应修改逻辑 // } }) } // 启动定时轮询,适配菜单关闭再打开后元素重置的场景 setInterval(fixButtons, CHECK_INTERVAL); })();
注意事项
- 使用前需要把脚本头部
@match后面的域名替换成你实际使用的游戏站点域名 - 剩余3个按钮直接按照代码里的注释新增分支适配即可
- 如果后续禁用按钮的原始样式有变动,直接修改
DISABLED_BTN_STYLE变量的值为新的style属性值即可
内容的提问来源于stack exchange,提问作者engelthehyp
相关产品推荐
相关产品推荐

