鱼糕V2 钓饵统计器

智能实时统计鱼糕V2钓饵,统一元素等待机制,修复 ReferenceError。

这些是此脚本变更过代码的版本。 显示所有版本。

  • v3.6 2025-06-22

    在本次系列更新中,我们的主要目标是提升脚本在处理动态加载和用户交互时的稳定性与准确性,特别关注了“加载更多”按钮的识别和钓饵数据的实时同步。

    核心改进点概览:

    1. 引入异步操作的等待机制

      • 问题:初始版本可能在页面内容完全加载前就开始查找元素,导致找不到表格或按钮。特别是“加载更多”按钮,在数据异步加载完成后才刷新出来。
      • 解决方案:全面引入了异步等待机制。通过 waitForElement 函数,脚本现在会耐心等待目标 DOM 元素(如主记录表格 tbody 和“加载更多”按钮)出现并变得可见,而不是立即进行查找。这大大提高了脚本在页面加载不同阶段的鲁棒性。
    2. 优化“加载更多”按钮的识别逻辑

      • 问题:最初尝试使用 Material-UI 生成的冗长且可能不稳定的 CSS 类名作为选择器,导致在某些环境下无法正确识别“加载更多”按钮,尤其当这些类名包含动态哈希值时。此外,还存在按钮未立即渲染完成就进行检查的竞态条件。
      • 解决方案
        • 废弃了之前不稳定的长类名选择器。
        • 改用更具语义化和稳定性的识别方法:查找所有可能的 Material-UI 按钮 (button.MuiButtonBase-root, button.MuiButton-root),并进一步检查这些按钮的 textContent 是否包含“加载更多”字样。
        • waitForElement 函数得到增强,现在支持同时通过选择器和文本内容进行匹配,确保能精准定位到目标按钮。
        • 在点击“加载更多”按钮的循环中,每次点击后都会再次使用 waitForElement 等待新的按钮状态出现,以应对页面异步刷新带来的延迟,避免因按钮未刷新而误判为已加载全部数据。
    3. 增强数据同步与用户筛选处理

      • 问题:用户在进行钓饵或鱼类筛选后,表格内容会动态变化,但脚本的钓饵统计未能实时更新。
      • 解决方案:引入了 MutationObserver。当监测到 tbody 元素的内容发生变化时(通常是用户进行了筛选操作),脚本会触发一次强制的、清空后重新扫描的钓饵统计。这确保了无论用户如何操作,显示的钓饵统计数据始终与当前页面可见的记录保持同步。
    4. 提升代码结构与健壮性

      • 问题:在迭代过程中,可能出现函数作用域或依赖管理上的疏漏(如 ReferenceError)。
      • 解决方案
        • 统一了所有元素等待操作,使其都通过一个单一、通用的 waitForElement 函数来完成,该函数灵活支持选择器匹配和文本内容匹配。
        • 移除了功能重叠或已过时的辅助函数,减少代码冗余,提升可维护性。
        • 增强了控制台日志输出,提供了更详细的脚本执行状态和错误信息,便于调试和问题诊断。

    通过上述一系列的精细化调整和系统性重构,鱼糕V2钓饵统计器用户脚本现在能够更智能、更稳定地适应鱼糕V2页面的动态特性,为用户提供准确的钓饵统计体验。

  • v3.1 2025-06-22

    Version 3.1 (2025-06-22)

    🚀 主要更新

    • 修复异步加载问题: 解决了 tbody.MuiTableBody-root 元素因页面异步加载而导致脚本启动时找不到的问题。
    • 更鲁棒的元素查找: 引入两阶段监听机制,确保脚本能稳定地在页面完全加载并渲染后,再开始精准监听表格变化。

    ✨ 详细改进

    1. 引入 setupInitialBodyObserver
      • 新增一个顶层 MutationObserver,专门监听 document.body 及其子孙节点的变化 (childList: true, subtree: true)。
      • 其唯一目标是等待并检测 tbody.MuiTableBody-root 元素的出现。
      • 一旦 tbody 被检测到,此观察者会立即停止监听,并将控制权移交给 setupTableBodyObserver
      • 这解决了 tbody 不是第一时间出现在DOM中的问题,避免了“未找到 tbody”的报错。
    2. 优化 setupTableBodyObserver 的生命周期管理:
      • setupTableBodyObserver 内部,现在会检查并断开之前可能存在的 tbody 监听器实例 (tableBodyObserverInstance),确保不会重复监听。
      • 它会在 tbody 出现后被调用,开始其对 tbody 内部行变化的精准监听。
    3. 增加 scanAndDisplayBaitSummary 的防抖处理 (简单版):
      • tbodyMutationObserver 回调中,加入了 setTimeout 进行简易防抖(延迟50ms)。
      • 这有助于在快速DOM变动(如连续的筛选操作)时,给页面一个稳定的时间,避免过于频繁地触发钓饵统计,优化性能。
    4. 更积极的筛选后统计触发:
      • 即使 tbody 的行数未发生变化,只要 tbody 内容被 MutationObserver 捕获到有改动,也会重新触发 scanAndDisplayBaitSummary()
      • 这确保了即使是仅仅改变了行内容(而非增删行)的筛选操作,也能即时更新钓饵统计,提供更实时的用户体验。
    5. 增强的日志输出: 增加了更多的 console.logconsole.error 语句,详细记录了观察者的启动、元素查找、断开等关键步骤,极大地方便了调试和理解脚本运行状态。

    Version 3.0 (2025-06-22)

    🚀 主要更新

    • 智能实时统计: 脚本现在能够实时响应钓鱼记录表格的筛选、分页等内容变化,并即时更新钓饵统计。
    • 精准监听: 将核心监听目标从“加载更多”按钮转移到表格体 tbody.MuiTableBody-root,实现更精确的数据更新触发。

    ✨ 详细改进

    1. 核心逻辑转变:
      • 移除“加载更多”逻辑: 脚本不再尝试自动点击并监听“加载更多”按钮,以加载所有历史记录。重心完全转移到当前可见数据的实时统计上。
      • 聚焦 tbody.MuiTableBody-root 创建了一个专门的 MutationObserver 实例,只监听 tbody.MuiTableBody-root 元素的 childList 变化(即其直接子元素 tr 的增删)。这使得脚本能高效地捕获筛选等操作引起的表格行变化。
    2. 引入 scanAndDisplayBaitSummary 函数:
      • 这是一个全新的核心函数,负责在每次检测到表格行变化时,清空旧的统计数据 (uniqueBaitNamesprocessedRows)。
      • 然后,它会重新扫描当前 tbody 中所有的钓鱼记录行,收集最新的钓饵信息。
      • 最后,它会重新渲染钓饵统计标签。
    3. 智能插入位置及旧容器清理:
      • 统计标签现在会尝试插入到表格最近的 div.MuiPaper-root 容器之前,或直接使用 tbody 的父元素,提高插入位置的适应性。
      • 在每次更新前,脚本会更稳定地查找并移除之前插入的旧统计容器,避免重复显示。
    4. 初始统计触发:
      • setupTableBodyObserver 启动后,会立即调用一次 scanAndDisplayBaitSummary(),确保页面首次加载时就能显示钓饵统计。
    5. 无钓饵数据提示: 当当前筛选条件下没有找到任何钓饵数据时,会显示“当前无钓饵数据”的提示,提升用户体验。

  • v2.3 2025-06-22

    适配新布局
    优化性能

  • v2.2 2025-03-16

    鱼糕V2 钓饵统计器 (优化版) v2.2 更新内容

    新增功能

    • 点击复制钓饵: 现在,您可以直接点击统计列表中显示的钓饵名称标签,即可将该钓饵名称复制到您的剪贴板。复制成功后,会显示一个短暂的通知提示。

    Bug 修复

    • 修复钓饵过滤错误: 修复了统计结果中错误地包含 "捕鱼人之识" 和 "钓组" 的问题。现在,统计结果将只显示实际使用的钓饵种类。
  • v2.0 2025-03-15