本文为 其乐用户(UID:470326) 发布的原创文章,转摘前请联系该用户获得许可
本帖最后由 470326 于 2025-3-19 17:04 编辑
经3楼大佬提醒,uBlock Origin,AdBlock,AdGuard都有这种功能
这个就当是练习使用deepseek吧,大家看看就好
不会排版,大家将就着看吧
别问我为啥起这个名字,因为这个名字是deepseek给起的
事情的起因:
商店页面的系统需求没有了
https://keylol.com/t993820-1-1
(出处: 其乐 Keylol)
然后我遍历了Augmented Steam和SteamDB的设置,发现steam商店页里很多我不想看的东西都无法隐藏
比如
还有一些获得的奖项之类的,对我来说都是没什么用的信息
想要把他们隐藏掉只能依靠油猴脚本了
我完全不懂这方面,因此只能依靠AI了
脚本目标:在steam的商店页面创建一个按钮,使其可以自定义添加想要隐藏的div标签的id
以下是deepseek写的,我一个符号都没有改动过
> 源码 - <blockquote>// ==UserScript==
- // @name Steam元素隐藏管理器
- // @namespace http://tampermonkey.net/
- // @version 2.0
- // @description 在Steam页面添加可自定义隐藏元素的控制面板
- // @author YourName
- // @match https://store.steampowered.com/app/*
- // @icon https://store.steampowered.com/favicon.ico
- // @grant GM_setValue
- // @grant GM_getValue
- // ==/UserScript==
- (function() {
- 'use strict';
-
- // 配置项
- const CONFIG = {
- storageKey: 'steamHiddenElements',
- buttonPosition: 'afterbegin', // 在页面顶栏插入按钮
- panelStyle: `
- position: fixed;
- top: 20%;
- right: 20px;
- background: #1b2838;
- padding: 15px;
- z-index: 9999;
- border-radius: 4px;
- box-shadow: 0 2px 10px rgba(0,0,0,0.5);
- color: #c6d4df;
- min-width: 280px;
- `
- };
- // 初始化存储
- let hiddenIds = GM_getValue(CONFIG.storageKey, []);
- if (!Array.isArray(hiddenIds)) hiddenIds = [];
- // 创建控制面板
- function createControlPanel() {
- // 主容器
- const panel = document.createElement('div');
- panel.style.cssText = CONFIG.panelStyle;
- panel.innerHTML = `
- <div style="margin-bottom:15px">
- <input type="text" id="customElementId"
- placeholder="输入要隐藏的元素ID"
- style="padding:5px;width:180px;background:#2a475e;border:1px solid #417a9b;color:white;">
- <button style="margin-left:5px;padding:5px 10px;background:#417a9b;border:none;color:white;cursor:pointer">添加</button>
- </div>
- <div id="currentList" style="max-height:200px;overflow-y:auto;"></div>
- <div style="margin-top:10px;font-size:0.9em;color:#66c0f4">
- 当前已隐藏 <span id="counter">0</span> 个元素
- </div>
- `;
- // 添加按钮事件
- panel.querySelector('button').addEventListener('click', addNewElement);
- panel.querySelector('input').addEventListener('keypress', e => {
- if (e.key === 'Enter') addNewElement();
- });
- // 初始隐藏面板
- panel.style.display = 'none';
- document.body.appendChild(panel);
- return panel;
- }
- // 创建触发按钮
- function createTriggerButton(panel) {
- const btn = document.createElement('div');
- btn.innerHTML = '🎚️ 元素隐藏管理器';
- btn.style.cssText = `
- position: fixed;
- top: 60px;
- right: 20px;
- background: #1b2838;
- padding: 8px 15px;
- border-radius: 4px;
- cursor: pointer;
- color: #66c0f4;
- font-family: Arial;
- z-index: 10000;
- box-shadow: 0 2px 5px rgba(0,0,0,0.3);
- transition: 0.3s;
- `;
- btn.addEventListener('click', () => {
- panel.style.display = panel.style.display === 'none' ? 'block' : 'none';
- updateListDisplay();
- });
- document.body.appendChild(btn);
- }
- // 更新元素列表显示
- function updateListDisplay() {
- const listContainer = document.getElementById('currentList');
- listContainer.innerHTML = hiddenIds.map(id => `
- <div style="padding:5px;margin:3px 0;background:#2a475e;display:flex;justify-content:space-between">
- <span>${id}</span>
- <button data-id="${id}"
- style="background:none;border:1px solid #c6d4df;color:#c6d4df;cursor:pointer">×</button>
- </div>
- `).join('');
- // 添加删除事件
- listContainer.querySelectorAll('button').forEach(btn => {
- btn.addEventListener('click', () => {
- hiddenIds = hiddenIds.filter(id => id !== btn.dataset.id);
- GM_setValue(CONFIG.storageKey, hiddenIds);
- updateListDisplay();
- applyHideRules();
- });
- });
- document.getElementById('counter').textContent = hiddenIds.length;
- }
- // 添加新元素
- function addNewElement() {
- const input = document.getElementById('customElementId');
- const newId = input.value.trim();
-
- if (newId && !hiddenIds.includes(newId)) {
- hiddenIds.push(newId);
- GM_setValue(CONFIG.storageKey, hiddenIds);
- input.value = '';
- applyHideRules();
- updateListDisplay();
- }
- }
- // 应用隐藏规则
- function applyHideRules() {
- hiddenIds.forEach(id => {
- const elements = document.querySelectorAll(`#${CSS.escape(id)}`);
- elements.forEach(el => el.style.display = 'none');
- });
- }
- // 主初始化
- const panel = createControlPanel();
- createTriggerButton(panel);
-
- // 使用增强版Observer
- const observer = new MutationObserver(mutations => {
- applyHideRules();
- });
-
- observer.observe(document.documentElement, {
- childList: true,
- subtree: true
- });
- // 初始执行
- applyHideRules();
- updateListDisplay();
- // 自动清理
- setTimeout(() => observer.disconnect(), 30000); // 30秒后停止观察
- })();
复制代码
> 介绍 功能亮点:
可视化操作界面:
悬浮控制按钮 (🎚️ 元素隐藏管理器) 弹出式控制面板 实时计数器显示已隐藏元素数量
核心功能:
输入框支持直接输入元素ID Enter键快速提交 已添加元素列表展示 一键删除功能 设置永久保存 (使用GM_setValue)
智能隐藏系统:
即时应用新规则 自动处理动态加载内容 支持特殊字符ID (使用CSS.escape)
UI设计:
完美适配Steam深色主题 平滑过渡动画 自适应滚动列表 符合Steam的视觉风格
使用指南:添加新元素:
点击悬浮按钮打开面板 在输入框输入要隐藏的div的ID 点击"添加"按钮或按Enter键
管理已隐藏元素:
列表中显示所有已保存的ID 点击右侧的×按钮删除条目 删除后元素会自动重新显示
状态反馈:
顶部计数器实时更新 成功添加时清空输入框 面板关闭时自动保存设置
deepseek给的扩展建议,有懂的大佬也可以自行修改
> 扩展建议 如果需要更强大的功能,可以添加:
- <blockquote>// 在CONFIG中添加
- advancedFeatures: {
- classSelector: true, // 支持class选择器
- attributeFilter: true, // 支持属性选择器
- customCSS: true // 允许输入自定义CSS
- }
- // 修改输入框提示文字
- placeholder: "输入选择器 (如:#id, .class, div[attribute])"
- // 修改应用规则逻辑
- function applyHideRules() {
- hiddenSelectors.forEach(selector => {
- document.querySelectorAll(selector).forEach(el => {
- el.style.display = 'none';
- });
- });
- }
复制代码[size=16.002px]这个增强版脚本不仅实现了基本需求,还提供了: 持久化存储 可视化操作 实时反馈 自动更新机制 风格化UI 错误安全处理
[size=16.002px]所有操作都会自动保存,即使刷新页面或重新打开浏览器,之前的设置仍然有效。
效果图:
如何获取VID标签:
以Chrome浏览器为例,在Steam商店页面,鼠标放在想要隐藏的元素位置,单击右键,点击检查
双击引号内的名字,粘贴到元素隐藏管理器内点添加或回车即可
理论上来讲,可以自行添加 @match 来支持任意网站,只是按钮样式不会变,有能力的可以自行修改
安装方法:
1.点我安装(需要工具)
2.自行复制代码,打开油猴,点加号,删除里面全部内容后粘贴,保存
|