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

Chrome扩展Manifest V3中调用chrome.action.setIcon()报TypeError错误的问题求助

Chrome扩展Manifest V3中调用chrome.action.setIcon()报TypeError错误的问题求助

大家好,我现在在开发一款Chrome扩展,想要实现点击扩展图标时切换图标的功能,采用的是Manifest V3版本,使用的方法是chrome.action.setIcon()。

我的manifest.json里已经正确配置了action属性,默认图标都能正常显示:

"action": {
  "default_icon": {
    "16": "/images/ext/icon16.png",
    "32": "/images/ext/icon32.png",
    "48": "/images/ext/icon48.png",
    "128": "/images/ext/icon128.png"
  }
}

我在服务工作者文件background.js里写了切换图标的函数:

function FUNCTION-WITH-ICON-TOGGLING(){
  chrome.action.setIcon({
    path: {
      '16': '/images/on/icon16.png',
      '32': '/images/on/icon32.png',
      '48': '/images/on/icon48.png',
      '128': '/images/on/icon128.png'
    }
  });
}

然后在扩展图标点击的监听函数里,我尝试通过注入脚本的方式调用这个切换函数:

chrome.action.onClicked.addListener((tab) => {
  chrome.scripting.executeScript({
    target: { tabId: tab.id },
    function: FUNCTION-WITH-ICON-TOGGLING
  });
});

结果运行后出现了这个错误:

Error handling response: TypeError: Cannot read properties of undefined (reading 'setIcon')

我试过修改语法,比如改成和默认图标一样的格式,甚至只用单个图标的路径:

chrome.action.setIcon({
  path: "/images/on/icon16.png"
});

但还是报同样的错误。我已经搜了很多资料,都没找到有人遇到这个问题,希望有人能给我指个方向,非常感谢!

备注:内容来源于stack exchange,提问作者Andrew Khassapov

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.23 07:14:04