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

JavaScript按键触发esp函数失效问题求助

解决Q键触发ESP函数无效的问题

让我们一步步排查并修复你的问题:

问题1:事件监听的第三个参数非法

你在addEventListener里传的第三个参数是750,这不符合API规范——这个参数只能是布尔值(表示是否使用捕获模式)或者配置对象。非法参数会导致浏览器无法正确注册事件监听器,这很可能是按键没反应的核心原因。

问题2:ESP函数的重复执行风险

你的esp()函数内部是一个立即执行函数(IIFE),每次调用esp()都会重新修改TextDecoder.prototype.decode。如果多次按Q键,会重复覆盖这个方法,可能导致逻辑冲突或失效。我们可以加一个标志位,确保初始化只执行一次。

修复后的完整代码

// 新增标志位,防止重复初始化
let espInitialized = false;

function esp() {
  if (espInitialized) return;
  espInitialized = true;
  
  (function() { 
    let initialize = function(data) { 
      let regex = /if\(!\w+\['(\w+)']\)continue/; 
      let result = regex.exec(data); 
      if (result) { 
        const inView = result[1]; 
        const push = Array.prototype.push; 
        Array.prototype.push = function(...args) { 
          push.apply(this, args); 
          if (args[0] instanceof Object && args[0].isPlayer) { 
            Object.defineProperty(args[0], inView, {value: true, configurable: false}); 
          } 
        } 
      } 
    } 
    const decode = window.TextDecoder.prototype.decode; 
    window.TextDecoder.prototype.decode = function(...args) { 
      let data = decode.apply(this, args); 
      if (data.length > 1050000) { //1050000 ideal val 
        console.log(data); 
        initialize(data); 
      } 
      return data; 
    } 
  })(); 
}

// 修复事件监听的第三个参数,改为合法的配置对象
window.addEventListener('keydown', (event) => { 
  if (document.activeElement !== document.body) return; 
  var char = event.key.toUpperCase(); 
  switch (char) { 
    case 'Q': 
      esp(); 
      break; 
  } 
}, { passive: true }); // 这里替换为合法参数

额外说明

  • 标志位espInitialized确保esp()逻辑只执行一次,避免重复修改原生方法导致的问题。如果需要支持重新触发ESP逻辑,可以添加重置标志位的逻辑(比如绑定另一个按键来设置espInitialized = false)。
  • 测试时记得先点击页面空白处,让body处于焦点状态——你的代码里已经做了这个判断,这部分逻辑是正确的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.08 13:37:57