You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firefox扩展获取游戏ID列表异常:读取至8563844698后中断

问题诊断与修复方案

核心问题分析

你遇到的ID列表读取中断问题,根源在于错误地将HTML页面当作JSON解析:

  • 你用fetch请求的是HTML页面,但直接调用response.json()尝试解析成JSON格式。如果该页面中嵌入的JSON内容在8563844698之后存在语法错误(比如引号未闭合、逗号缺失),JSON解析器会直接停止,导致后续ID无法读取。
  • 另外,你在内部重复声明了var linkIDs,虽然不直接导致中断,但会造成变量作用域混淆。

修复步骤

1. 修正数据获取与解析逻辑

如果你的网站是通过HTML页面返回JSON数据,需要先获取文本内容再手动解析,同时增加错误捕获定位问题:

let linkIDs = [];
fetch('你的网站数据页面')
  .then(response => response.text()) // 先获取文本内容,避免直接解析JSON失败
  .then(text => {
    try {
      const data = JSON.parse(text); // 手动解析JSON并捕获语法错误
      linkIDs = data.values;
      console.log("完整ID列表:", linkIDs);
      // 启动移除逻辑
      startRemovalLoop();
    } catch (parseError) {
      console.error("JSON解析失败:", parseError.message);
      // 打印出错位置附近的内容,方便排查语法问题
      const errorSegment = text.slice(Math.max(0, parseError.position - 20), parseError.position + 20);
      console.log("出错位置附近内容:", errorSegment);
    }
  })
  .catch(error => {
    console.error('网络请求错误:', error);
  });

2. 修复DOM遍历的动态集合问题

document.getElementsByClassName返回的是动态HTML集合,删除元素时会直接改变集合的长度和索引,导致遍历遗漏。需要先将其转换为静态数组:

function startRemovalLoop() {
  setInterval(() => {
    // 转换为静态数组,避免动态集合的索引错乱问题
    const gameCardLinks = Array.from(document.getElementsByClassName("game-card-link"));
    
    gameCardLinks.forEach(link => {
      const href = link.getAttribute("href");
      // 用some替代内层循环,找到匹配ID就停止检查
      const shouldRemove = linkIDs.some(id => href.includes(id));
      if (!shouldRemove) return;

      const parent = link.parentNode.parentNode;
      const belowParent = link.parentNode;
      
      if (parent.classList.contains("list-item") && parent.classList.contains("game-card") && parent.classList.contains("game-tile")) {
        belowParent.removeChild(link);
        console.log("移除元素:", link);
      } else if (belowParent.hasAttribute("data-testid") && belowParent.getAttribute("data-testid").includes("game-tile")) {
        belowParent.removeChild(link);
        console.log("移除元素:", link);
      }
    });
  }, 1200);
}

3. 关键排查点

  • 直接访问你的网站数据页面,查看8563844698之后的JSON内容是否存在语法错误(比如多余的逗号、未闭合的引号、格式不规范),这是导致解析中断的最可能原因。
  • 改用let/const替代var,避免变量作用域冲突。

内容的提问来源于stack exchange,提问作者Luke Code

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.15 21:31:21