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

MV3扩展调用chrome.downloads.download()下载内置文件失败求助

解答

这是Manifest V3的安全限制导致的,无法直接通过chrome.downloads.download()使用chrome.runtime.getURL()返回的扩展资源URL完成下载。

原因是MV3对扩展私有资源做了严格隔离,chrome-extension://协议的URL仅能在扩展内部上下文访问,下载服务无法直接读取这类资源,和你的代码操作无关。

如果想尽量简化实现流程,可以用更紧凑的写法完成fetch转可下载URL的逻辑,没有多余冗余步骤:

修改background.js中的onClicked函数:

async function onClicked(tab, onClickData) {
  const res = await fetch(chrome.runtime.getURL("text/Test.txt"));
  const blob = await res.blob();
  const tempUrl = URL.createObjectURL(blob);
  
  chrome.downloads.download({
    conflictAction: "overwrite",
    filename: "Test.txt",
    saveAs: false,
    url: tempUrl,
  }, () => {
    // 下载完成后释放临时URL资源
    URL.revokeObjectURL(tempUrl);
  });
}

这是MV3中实现内置资源下载的标准简洁方案,没有额外复杂操作。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 22:15:39