回复
7
查看
1175
收藏
5

71

赠楼

1%

赠楼率

734

蒸汽

270

主题

9265

帖子

8584

积分
发表于 2025-3-19 16:36:05 · 河北 | 显示全部楼层 |阅读模式
本文为 其乐用户(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写的,我一个符号都没有改动过
> 源码
  1. <blockquote>// ==UserScript==
  2. // @name         Steam元素隐藏管理器
  3. // @namespace    http://tampermonkey.net/
  4. // @version      2.0
  5. // @description  在Steam页面添加可自定义隐藏元素的控制面板
  6. // @author       YourName
  7. // @match        https://store.steampowered.com/app/*
  8. // @icon         https://store.steampowered.com/favicon.ico
  9. // @grant        GM_setValue
  10. // @grant        GM_getValue
  11. // ==/UserScript==


  12. (function() {
  13.     'use strict';
  14.    
  15.     // 配置项
  16.     const CONFIG = {
  17.         storageKey: 'steamHiddenElements',
  18.         buttonPosition: 'afterbegin', // 在页面顶栏插入按钮
  19.         panelStyle: `
  20.             position: fixed;
  21.             top: 20%;
  22.             right: 20px;
  23.             background: #1b2838;
  24.             padding: 15px;
  25.             z-index: 9999;
  26.             border-radius: 4px;
  27.             box-shadow: 0 2px 10px rgba(0,0,0,0.5);
  28.             color: #c6d4df;
  29.             min-width: 280px;
  30.         `
  31.     };


  32.     // 初始化存储
  33.     let hiddenIds = GM_getValue(CONFIG.storageKey, []);
  34.     if (!Array.isArray(hiddenIds)) hiddenIds = [];


  35.     // 创建控制面板
  36.     function createControlPanel() {
  37.         // 主容器
  38.         const panel = document.createElement('div');
  39.         panel.style.cssText = CONFIG.panelStyle;
  40.         panel.innerHTML = `
  41.             <div style="margin-bottom:15px">
  42.                 <input type="text" id="customElementId"
  43.                     placeholder="输入要隐藏的元素ID"
  44.                     style="padding:5px;width:180px;background:#2a475e;border:1px solid #417a9b;color:white;">
  45.                 <button style="margin-left:5px;padding:5px 10px;background:#417a9b;border:none;color:white;cursor:pointer">添加</button>
  46.             </div>
  47.             <div id="currentList" style="max-height:200px;overflow-y:auto;"></div>
  48.             <div style="margin-top:10px;font-size:0.9em;color:#66c0f4">
  49.                 当前已隐藏 <span id="counter">0</span> 个元素
  50.             </div>
  51.         `;


  52.         // 添加按钮事件
  53.         panel.querySelector('button').addEventListener('click', addNewElement);
  54.         panel.querySelector('input').addEventListener('keypress', e => {
  55.             if (e.key === 'Enter') addNewElement();
  56.         });


  57.         // 初始隐藏面板
  58.         panel.style.display = 'none';
  59.         document.body.appendChild(panel);
  60.         return panel;
  61.     }


  62.     // 创建触发按钮
  63.     function createTriggerButton(panel) {
  64.         const btn = document.createElement('div');
  65.         btn.innerHTML = '🎚️ 元素隐藏管理器';
  66.         btn.style.cssText = `
  67.             position: fixed;
  68.             top: 60px;
  69.             right: 20px;
  70.             background: #1b2838;
  71.             padding: 8px 15px;
  72.             border-radius: 4px;
  73.             cursor: pointer;
  74.             color: #66c0f4;
  75.             font-family: Arial;
  76.             z-index: 10000;
  77.             box-shadow: 0 2px 5px rgba(0,0,0,0.3);
  78.             transition: 0.3s;
  79.         `;
  80.         btn.addEventListener('click', () => {
  81.             panel.style.display = panel.style.display === 'none' ? 'block' : 'none';
  82.             updateListDisplay();
  83.         });
  84.         document.body.appendChild(btn);
  85.     }


  86.     // 更新元素列表显示
  87.     function updateListDisplay() {
  88.         const listContainer = document.getElementById('currentList');
  89.         listContainer.innerHTML = hiddenIds.map(id => `
  90.             <div style="padding:5px;margin:3px 0;background:#2a475e;display:flex;justify-content:space-between">
  91.                 <span>${id}</span>
  92.                 <button data-id="${id}"
  93.                     style="background:none;border:1px solid #c6d4df;color:#c6d4df;cursor:pointer">×</button>
  94.             </div>
  95.         `).join('');


  96.         // 添加删除事件
  97.         listContainer.querySelectorAll('button').forEach(btn => {
  98.             btn.addEventListener('click', () => {
  99.                 hiddenIds = hiddenIds.filter(id => id !== btn.dataset.id);
  100.                 GM_setValue(CONFIG.storageKey, hiddenIds);
  101.                 updateListDisplay();
  102.                 applyHideRules();
  103.             });
  104.         });


  105.         document.getElementById('counter').textContent = hiddenIds.length;
  106.     }


  107.     // 添加新元素
  108.     function addNewElement() {
  109.         const input = document.getElementById('customElementId');
  110.         const newId = input.value.trim();
  111.         
  112.         if (newId && !hiddenIds.includes(newId)) {
  113.             hiddenIds.push(newId);
  114.             GM_setValue(CONFIG.storageKey, hiddenIds);
  115.             input.value = '';
  116.             applyHideRules();
  117.             updateListDisplay();
  118.         }
  119.     }


  120.     // 应用隐藏规则
  121.     function applyHideRules() {
  122.         hiddenIds.forEach(id => {
  123.             const elements = document.querySelectorAll(`#${CSS.escape(id)}`);
  124.             elements.forEach(el => el.style.display = 'none');
  125.         });
  126.     }


  127.     // 主初始化
  128.     const panel = createControlPanel();
  129.     createTriggerButton(panel);
  130.    
  131.     // 使用增强版Observer
  132.     const observer = new MutationObserver(mutations => {
  133.         applyHideRules();
  134.     });
  135.    
  136.     observer.observe(document.documentElement, {
  137.         childList: true,
  138.         subtree: true
  139.     });


  140.     // 初始执行
  141.     applyHideRules();
  142.     updateListDisplay();


  143.     // 自动清理
  144.     setTimeout(() => observer.disconnect(), 30000); // 30秒后停止观察
  145. })();
复制代码


> 介绍
功能亮点:
  • 可视化操作界面

    • 悬浮控制按钮 (🎚️ 元素隐藏管理器)
    • 弹出式控制面板
    • 实时计数器显示已隐藏元素数量

  • 核心功能

    • 输入框支持直接输入元素ID
    • Enter键快速提交
    • 已添加元素列表展示
    • 一键删除功能
    • 设置永久保存 (使用GM_setValue)

  • 智能隐藏系统

    • 即时应用新规则
    • 自动处理动态加载内容
    • 支持特殊字符ID (使用CSS.escape)

  • UI设计

    • 完美适配Steam深色主题
    • 平滑过渡动画
    • 自适应滚动列表
    • 符合Steam的视觉风格


使用指南:
  • 添加新元素

    • 点击悬浮按钮打开面板
    • 在输入框输入要隐藏的div的ID
    • 点击"添加"按钮或按Enter键

  • 管理已隐藏元素

    • 列表中显示所有已保存的ID
    • 点击右侧的×按钮删除条目
    • 删除后元素会自动重新显示

  • 状态反馈

    • 顶部计数器实时更新
    • 成功添加时清空输入框
    • 面板关闭时自动保存设置



deepseek给的扩展建议,有懂的大佬也可以自行修改
> 扩展建议
如果需要更强大的功能,可以添加:
  1. <blockquote>// 在CONFIG中添加
  2. advancedFeatures: {
  3.     classSelector: true,      // 支持class选择器
  4.     attributeFilter: true,    // 支持属性选择器
  5.     customCSS: true           // 允许输入自定义CSS
  6. }


  7. // 修改输入框提示文字
  8. placeholder: "输入选择器 (如:#id, .class, div[attribute])"


  9. // 修改应用规则逻辑
  10. function applyHideRules() {
  11.     hiddenSelectors.forEach(selector => {
  12.         document.querySelectorAll(selector).forEach(el => {
  13.             el.style.display = 'none';
  14.         });
  15.     });
  16. }
复制代码
[size=16.002px]这个增强版脚本不仅实现了基本需求,还提供了:
  • 持久化存储
  • 可视化操作
  • 实时反馈
  • 自动更新机制
  • 风格化UI
  • 错误安全处理

[size=16.002px]所有操作都会自动保存,即使刷新页面或重新打开浏览器,之前的设置仍然有效。


效果图:


如何获取VID标签:
以Chrome浏览器为例,在Steam商店页面,鼠标放在想要隐藏的元素位置,单击右键,点击检查



双击引号内的名字,粘贴到元素隐藏管理器内点添加或回车即可

理论上来讲,可以自行添加 @match 来支持任意网站,只是按钮样式不会变,有能力的可以自行修改

安装方法:
1.点我安装(需要工具)
2.自行复制代码,打开油猴,点加号,删除里面全部内容后粘贴,保存

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

×
回复

使用道具 举报

浏览本版块需要:
1. 初阶会员或更高等级;
2. (点击此处)绑定Steam账号
您需要登录后才可以回帖 登录 | 注册

本版积分规则

欢迎发帖参与讨论 o(*≧▽≦)ツ,请注意
1. 寻求帮助或答案的帖子请发到问题互助版块,悬赏有助于问题解决的速度。发错可能失去在该板块发布主题的权限(了解更多
2. 表达观点可以,也请务必注意语气和用词,以免影响他人浏览,特别是针对其他会员的内容。如觉得违规可使用举报功能 交由管理人员处理,请勿引用对方的内容。
3. 开箱晒物交易中心游戏互鉴福利放送版块请注意额外的置顶版规。
4. 除了提问帖和交易帖以外,不确认发在哪个版块的帖子可以先发在谈天说地

  作为民间站点,自 2004 年起为广大中文 Steam 用户提供技术支持与讨论空间。历经二十余载风雨,如今已发展为国内最大的正版玩家据点。

列表模式 · · 微博 · Bilibili频道 · Steam 群组 · 贴吧 · QQ群 
Keylol 其乐 ©2004-2025 Chinese Steam User Fan Site.
Designed by Lee in Balestier, Powered by Discuz!
推荐使用 ChromeMicrosoft Edge 来浏览本站
广告投放|手机版|广州数趣信息科技有限公司 版权所有|其乐 Keylol ( 粤ICP备17068105号 )
GMT+8, 2025-4-15 11:32
快速回复 返回顶部 返回列表