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

Chrome自动按键扩展在目标页面失效问题求助

问题诊断与解决方案

核心原因

  1. 事件可信度过滤:通过new KeyboardEvent()创建的事件默认isTrusted属性为false,多数网站的键盘事件监听器会忽略这类非真实用户触发的事件,仅响应isTrusted: true的原生事件。
  2. 事件流不完整:仅触发keydown事件,部分网站需要完整的keydown+keyup事件序列才会触发计数逻辑。
  3. 废弃属性使用:keyCode是已被标准废弃的属性,现代网站的监听器普遍改用key或code识别按键。

修改方案

1. 更新background.js的按键模拟逻辑

替换原executeScript内的函数,模拟完整的标准键盘事件流(虽无法直接设置isTrusted: true,但完整序列+标准属性可绕过多数网站过滤):

let isActive = false;
let intervalId;

chrome.action.onClicked.addListener(tab => {
  isActive = !isActive;
  const icon = isActive ? "icon-active.png" : "icon.png";
  chrome.action.setIcon({path: icon});

  if (isActive) {
    intervalId = setInterval(() => {
      console.log("Key pressed");
      chrome.scripting.executeScript({
        target: {tabId: tab.id},
        function: () => {
          // 确保页面获得焦点
          document.body.focus();

          // 模拟keydown事件
          const keydownEvent = new KeyboardEvent('keydown', {
            key: ' ',
            code: 'Space',
            bubbles: true,
            cancelable: true,
            view: window
          });
          document.body.dispatchEvent(keydownEvent);

          // 模拟keyup事件
          const keyupEvent = new KeyboardEvent('keyup', {
            key: ' ',
            code: 'Space',
            bubbles: true,
            cancelable: true,
            view: window
          });
          document.body.dispatchEvent(keyupEvent);
        }
      });
    }, 3000);
  } else {
    clearInterval(intervalId);
  }
});

2. 修正manifest.json的冗余配置

移除action字段中的on_click配置(Manifest V3中,点击事件需通过service worker监听chrome.action.onClicked,manifest内该配置无效):

{
  "name": "Auto Spacebar Presser",
  "description": "Automatically presses spacebar button every 3 seconds",
  "version": "1.0",
  "manifest_version": 3,
  "icons": {
    "128": "icon.png"
  },
  "background": {
    "service_worker": "background.js"
  },
  "permissions": ["activeTab", "scripting"],
  "action": {
    "default_icon": { "16": "icon.png", "32": "icon.png", "48": "icon.png" },
    "default_title": "Auto Space Presser",
    "default_popup": ""
  }
}

额外注意事项

  • 若部分网站仍不响应,可尝试针对页面的具体输入元素触发事件(比如先获取document.activeElement或特定输入框,再在该元素上派发事件)。
  • 少数网站会使用严格反作弊机制,此时可能需要借助chrome.debugger API模拟原生键盘输入,但该API需要额外权限且使用复杂度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.25 00:04:59