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

如何在Chrome扩展Manifest V3中实现URL变化时自动下载文件?

Manifest V3 实现标签页URL变化时自动下载URL到本地

你需要实现标签页URL变化时,自动将匹配的URL下载到本地的功能。由于Manifest V3中背景脚本改为Service Worker,无法操作DOM,原MV2通过创建DOM元素触发下载的方案失效,可通过Chrome官方提供的chrome.downloads API替代实现,以下是适配后的完整代码:

修改后的 manifest.json

{
  "name": "My test extension",
  "version": "1",
  "manifest_version": 3,
  "background": {
    "service_worker": "background.js"
  },
  "permissions": [
    "tabs",
    "downloads"
  ]
}

修改后的 background.js

const urlList = ["https://www.google.com/"];
let lastUrl = "";

// 使用Chrome downloads API实现下载
function download(filename, text) {
  chrome.downloads.download({
    url: `data:text/plain;charset=utf-8,${encodeURIComponent(text)}`,
    filename: filename,
    conflictAction: "overwrite" // 可选:重复下载时覆盖文件,也可改为"prompt"提示用户选择
  });
}

chrome.tabs.onUpdated.addListener((tabId, changeInfo, tab) => {
  if (lastUrl === tab.url) return;
  lastUrl = tab.url;
  
  for (const targetUrl of urlList) {
    if (tab.url.includes(targetUrl)) {
      download('url.txt', tab.url);
      return;
    }
  }
});

关键改动说明

  • Manifest配置调整:将manifest_version改为3,背景脚本从scripts改为service_worker;新增downloads权限,确保能调用Chrome的下载API。
  • 下载逻辑替换:移除原依赖DOM创建a标签的下载方式,改用chrome.downloads.downloadAPI,该API可在Service Worker环境中正常运行,无需DOM支持。
  • 代码细节优化:将原for循环改为更简洁的for...of遍历,变量声明改用const/let符合现代JS规范。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 17:30:42