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

Chrome扩展content script的sendResponse无法到达service worker的sendMessage回调

问题解决方法

核心原因(最高概率)

你的content script的chrome.runtime.onMessage监听函数没有主动调用sendResponse方法,即使没有返回数据也需要显式调用,否则Chrome不会触发sendMessage的回调函数。
示例正确写法:

chrome.runtime.onMessage.addListener((message, sender, sendResponse) => {
  // 你的处理逻辑
  console.log('收到消息', message)
  // 必须调用这一行,哪怕返回空对象
  sendResponse({})
})

其他排查方向

  • 如果你使用的是Manifest V3版本,优先使用Promise写法替代回调写法,部分版本的MV3对回调写法的兼容性存在问题:
    // background.js中写法
    chrome.tabs.sendMessage(tabId, {color: "FOO"})
      .then(resp => console.log('收到返回', resp))
      .catch(err => console.error('报错', err))
    
  • 检查是否存在多个chrome.runtime.onMessage监听器,多个监听器同时存在时只有第一个调用sendResponse的监听器会生效,其余监听器如果没有处理返回会导致回调阻塞。
  • 手动调用测试时修正回调写法,你之前的写法resp=>console.log没有执行打印逻辑,正确写法为resp=>console.log(resp),同时确认你使用的标签页ID正确,且该标签页不是chrome://开头的内置页面、扩展商店页面或者隐私模式下的受限页面。
  • 确认你在manifest.json中声明了对应站点的host权限,以及content script的matches规则匹配你测试的站点。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 03:27:02