本帖最后由 星之子 于 2025-5-10 02:02 编辑
动机
泥潭的左侧栏应该是所有页面都会有、可触达性最好的快捷键。但这里一部分不太常用的按钮,如“论坛规范”“新人升级”“常见问题”等度过新手期就不再使用、“近期活动”本质上是跳转活动中心但活动一般会小电视置顶的等等。让它们占据一个使用率如此之高的快捷栏,感觉稍微有那么一丢丢浪费,所以写了这个脚本。
但是Chrome更新新版本后,脚本旧版本似乎出现了一些冲突,导致页面卡顿、崩溃;而且在某次论坛更新中,左侧边栏的结构也发生了变化,添加了一些新按钮。在加上一些论坛政策变化,如投票不再加血液因此左侧不需要再留“本月调查”按钮,等。因此借助DeepSeek重构了原脚本的代码,并按照我个人的使用习惯,重新配置了一些左侧边栏(依然保留了自定义功能)。
主要功能
给左侧栏的每一个按钮位置都添加了一个可自定义编辑的参数,可以通过以下方式修改:
- // 定义每个按钮的配置,默认保持不变
- // 1 表示按钮不变
- // 0 表示禁止按钮显示
- // 2 表示修改按钮 请按照[2,"按钮名称","鼠标悬停时显示的按钮描述","按钮关联到的网址"]格式进行填写
复制代码
左边这些符号可以自行挑选,我这里列出我找符号时用到的两个网址:
https://tool.lmeee.com/fuhao/teshu
https://www.cnblogs.com/facingscreen/p/18103217
代码
@Name @Match
这里有部分代码是按照我自己的喜好修改的,不过原理相同,可以参考格式自行修改成喜欢的。
- // ==UserScript==
- // @name 全局:自定义左侧边栏
- // @namespace http://tampermonkey.net/
- // @version 1.1
- // @description [安全优化版] 修改导航菜单按钮的显示内容、悬浮提示和链接
- // @author Étoiles
- // @match https://www.gamemale.com/*
- // @grant none
- // ==/UserScript==
- (function () {
- 'use strict';
- // 配置项保持不变
- const buttonConfig = {
- //首页
- "mn_forum": [2,"回到首页 ☝","","https://www.gamemale.com/"],
- //论坛规范
- "mn_N2c45": [2,"记录广场 ◉","快速查看当前热点~","https://www.gamemale.com/home.php?mod=space&do=doing&view=all"],
- //新人升级
- "mn_Na183": [2,"我的勋章 ▣","让我康康你的库存~","https://www.gamemale.com/wodexunzhang-showxunzhang.html?action=my"],
- //常见问题
- "mn_N69dc": [2,"二手市场 ▧","二手市场一键直达!","https://www.gamemale.com/wodexunzhang-showxunzhang.html?action=showjishou"],
- //勋章商城
- "mn_Nf376": [2,"勋章商城 ▤"],
- //我的勋章
- "mn_N13d5": [2,"和谐动漫 ❤","发帖时间倒序的和谐动漫。","https://www.gamemale.com/forum.php?mod=forumdisplay&fid=150&filter=author&orderby=dateline"],
- //道具超市
- "mn_Nc5cc": [2,"绘画创作 ","在这里回帖会比较爽~","https://www.gamemale.com/forum.php?mod=forumdisplay&fid=56&filter=author&orderby=dateline"],
- //血液祭献
- "mn_N35bc": [2,"生活爆照 ☃","在这里回帖会比较爽~","https://www.gamemale.com/forum.php?mod=forumdisplay&fid=58&filter=author&orderby=dateline"],
- //你画我猜
- "mn_N34e7": [2,"五花八门 ❀","在这里回帖会比较爽~","https://www.gamemale.com/forum.php?mod=forumdisplay&fid=60&filter=author&orderby=dateline"],
- //日常卡片
- "mn_N91b5": [2,"CGAI ❖","在这里回帖会比较爽~","https://www.gamemale.com/forum.php?mod=forumdisplay&fid=205&filter=author&orderby=dateline"],
- //头衔称号
- "mn_N50a7": [2,"道具超市 ♞","补签卡 金币卡 变色卡……你想要的这儿都有!","https://www.gamemale.com/home.php?mod=magic"],
- //热门任务
- "mn_Ncfa1": [2,"热门任务 ✈"],
- //近期活动
- "mn_N2e25": [2,"我的访客 ☎","看看有谁来过我的空间。","https://www.gamemale.com/home.php?mod=space&do=friend&view=visitor"],
- //转帖合集
- "mn_N4483": [0],
- //科考小队
- "mn_Ncc15": [0]
- };
- // 核心处理函数
- const processMenu = () => {
- const menuItems = document.querySelectorAll('.nav-menu li:not([data-processed])');
- menuItems.forEach(item => {
- const config = buttonConfig[item.id];
- if (!config) return;
- item.dataset.processed = 'true'; // 标记已处理
- if (config[0] === 0) {
- item.style.display = 'none';
- return;
- }
- if (config[0] === 2) {
- const link = item.querySelector('a');
- if (!link) return;
- // 依次更新内容
- if (config[1]) link.textContent = config[1];
- if (config[2]) link.title = config[2];
- if (config[3]) link.href = config[3];
- }
- });
- };
- // 防抖处理
- let updateTimer;
- const safeUpdate = () => {
- clearTimeout(updateTimer);
- updateTimer = setTimeout(processMenu, 300);
- };
- // 初始化执行
- if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', processMenu);
- } else {
- processMenu();
- }
- // 优化后的观察器
- const observer = new MutationObserver(mutations => {
- const needsUpdate = mutations.some(mutation =>
- [...mutation.addedNodes].some(node =>
- node.nodeType === 1 && node.matches('li')
- )
- );
- if (needsUpdate) safeUpdate();
- });
- // 精确监听导航容器
- const navContainer = document.querySelector('.nav-menu');
- if (navContainer) {
- observer.observe(navContainer, {
- childList: true,
- subtree: true
- });
- }
- // 清理残留标记
- window.addEventListener('unload', () => {
- document.querySelectorAll('[data-processed]').forEach(el => {
- el.removeAttribute('data-processed');
- });
- });
- })();
复制代码
来自群组: 星象占卜 |