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

chrome.downloads.onCreated报错 Chrome浏览器插件开发问题排查

问题原因

报错的核心原因有两个:

  • 权限配置位置错误:permissions是Manifest V3的顶级配置字段,你当前把它写在了content_scripts的单个脚本配置项内,Chrome无法识别到你申请的downloads权限。
  • 脚本运行上下文不匹配:chrome.downloads属于高权限扩展API,仅能在扩展自有上下文(后台Service Worker、扩展弹窗、选项页)中调用。你把监听逻辑写在了作为内容脚本(content script)的main.js里,内容脚本是注入到普通网页上下文运行的,本身就没有访问downloadsAPI的权限,此时chrome.downloads值为undefined,读取onCreated属性自然会抛出类型错误。
解决步骤
  1. 修正Manifest配置文件,将permissions移到顶级配置层级,同时新增后台Service Worker配置,用来存放需要高权限的API调用逻辑。修正后的Manifest示例:
{ 
    "manifest_version": 3,
    "version": "1.0",
    "name": "Test",
    "permissions": ["downloads"],
    "background": {
        "service_worker": "background.js"
    },
    "content_scripts": [
        {
             "matches": ["<all_urls>"],
             "js": ["main.js"]
        }
    ]
}
  1. 新建background.js文件,把原来写在main.js里的下载事件监听逻辑移到这个文件中:
function handleCreated(item) {
    console.log(item); 
}
chrome.downloads.onCreated.addListener(handleCreated);
  1. 移除main.js里原来的chrome.downloads.onCreated相关监听代码。如果后续需要从内容脚本触发下载相关操作,不要直接在内容脚本调用downloads API,通过扩展消息通信机制把操作指令发送给后台Service Worker,由后台完成API调用即可。
  2. 打开Chrome扩展管理页(地址栏输入chrome://extensions/),找到你的扩展点击重新加载按钮,让新配置生效。如果要查看background.js的日志输出,点击扩展卡片上的「Service Worker」链接即可打开后台上下文的开发者工具,不要在普通网页的控制台查找后台脚本日志。

内容的提问来源于stack exchange,提问作者Johannes Hör

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 03:27:21