稀土掘金技术社区 10月21日 09:54
一键下载页面所有图片:Chrome 插件制作指南
index_new5.html
../../../zaker_core/zaker_tpl_static/wap/tpl_guoji1.html

 

本文介绍了如何利用 Chrome 扩展程序,快速批量下载网页上的所有图片。文章详细讲解了插件的开发步骤,包括 `manifest.json` 文件的配置以及 `background.js` 后台脚本的编写,用于创建右键菜单并响应下载请求。通过 `chrome.scripting` API 在页面中执行脚本获取图片 URL,再利用 `chrome.downloads` API 实现批量下载。整个过程清晰易懂,旨在帮助开发者快速掌握 Chrome 插件的开发技巧,解决网页素材收集的痛点。

💡 **插件核心功能**:本 Chrome 插件的核心在于实现一键批量下载当前网页上的所有图片,有效解决了前端开发人员在素材收集过程中手动保存图片的繁琐和易遗漏问题,大幅提升了工作效率。

🛠️ **开发技术栈**:插件开发主要涉及 `manifest.json` 文件(用于定义插件的身份和权限)和 `background.js` 文件(用于处理后台逻辑,如创建右键菜单和下载)。关键 API 包括 `chrome.runtime`(管理插件生命周期)、`chrome.contextMenus`(创建右键菜单)、`chrome.scripting`(执行页面脚本)和 `chrome.downloads`(管理下载任务)。

🚀 **实现流程**:插件通过 `chrome.contextMenus.create` 添加一个“我要下载所有图片”的右键菜单项。当用户点击此菜单项时,`chrome.contextMenus.onClicked` 事件被触发,进而调用 `chrome.scripting.executeScript` 在当前页面执行 `getImagesFromPage` 函数,该函数会捕获所有 `` 标签的 `src` 属性。获取到的图片 URL 列表随后通过 `chrome.downloads.download` 逐个进行批量下载,并设置了延迟以避免浏览器限制。

🔧 **调试与加载**:文章还提供了如何将插件加载到 Chrome 浏览器(开启开发者模式,选择未打包的扩展程序)以及如何通过调试面板(Service Worker 入口)查看 `background.js` 的日志和进行断点调试,方便开发者排查和解决问题。

原创 不一样的少年_ 2025-10-21 08:30 重庆

前端还原页面你肯定干过吧?像仿 xxx 首页那种。收素材时最烦的就是一张张存图,慢不说还老漏。跟我用 10 分钟做个 chrome 小插件,点一下,整页图片全下到本地

点击关注公众号,“技术干货” 及时达!

前端还原页面你肯定干过吧?像仿 xxx 首页那种。收素材时最烦的就是一张张存图,慢不说还老漏。

跟我用 10 分钟做个 chrome 小插件,点一下,整页图片全下到本地

先看效果:在素材网站一键批量保存所有图片废话不多说,直接上手!项目结构

    image-downloader-extension
    ├── manifest.json      # 扩展的"身份证"
    └── background.js      # 插件后台脚本

    「创建文件夹」image-downloader-extension

    「创建 manifest.json 文件」

    这个文件是插件的「身份证」,告诉浏览器你的插件是谁、能干啥。

      {
        "manifest_version": 3,
        "name": "我的下载插件",
        "version": "1.0.0",
        "permissions": ["contextMenus", "downloads", "scripting"],
        "host_permissions": ["<all_urls>"],
        "background": {
          "service_worker": "background.js"
        }
      }

      关键点解读

      字段

      说明

      manifest_version: 3

      使用最新的 Manifest V3 扩展规范

      name

      插件名称

      version

      插件版本号

      permissions

      申请权限(contextMenus 创建右键菜单,downloads 下载)

      「创建 background.js 文件」

      background.js 后台脚本负责创建并响应右键菜单等事件来下载页面图片

        // 1. 插件安装时创建右键菜单
        chrome.runtime.onInstalled.addListener(() => {
          chrome.contextMenus.create({
            id'downloadAllImages'// 菜单唯一标识
            title'我要下载所有图片'// 菜单显示的文字
            contexts: ['page'], // 在页面任意位置右键时显示
          });
        });

        // 2. 监听右键菜单点击事件
        chrome.contextMenus.onClicked.addListener((info, tab) => {
          if (info.menuItemId === 'downloadAllImages') {
            // 使用 scripting API 在当前页面执行脚本获取所有图片
            chrome.scripting.executeScript(
              {
                target: { tabId: tab.id },
                func: getImagesFromPage,
              },
              (results) => {
                // 获取执行结果
                if (!results || !results[0]?.result || results[0].result.length === 0) {
                  console.log('未找到图片');
                  return;
                }
                const images = results[0].result;
                // 批量下载图片
                images.forEach((url, index) => {
                  setTimeout(() => {
                    chrome.downloads.download({
                      url: url,
                      filename`images/image_${index + 1}.jpg`// 保存路径
                      saveAsfalse// 不弹出保存对话框
                    });
                  }, index * 500); // 每张图片间隔 500ms,避免浏览器限制
                });
              }
            );
          }
        });

        // 在页面中执行的函数,用于获取所有图片URL
        function getImagesFromPage() {
          const images = Array.from(document.images)
            .map((img) => img.src)
            .filter((src) => src.startsWith('http'));

          return images;
        }

        「API 文档速查」

        chrome.runtime(扩展生命周期 / 事件)

        chrome.contextMenus(右键菜单)

        chrome.scripting(脚本执行)

        chrome.downloads(下载管理)

        声明权限权限声明(MV3)

        「加载插件到浏览器」

        接下来我们将插件加载到浏览器中

        步骤:4.1 打开扩展管理页面在 Chrome 地址栏输入 chrome://extensions/ 并回车

        4.2 开启开发者模式4.3 点击 “加载未打包的扩展程序”选择刚刚创建的image-downloader-extension文件夹进行加载

        4.4 插件加载成功你会看到插件出现在列表中

        「至此,我们的下载插件就搞完了,是不是非常容易?」

        测试(验证功能)接下来我们随便打开一个网站,点击鼠标右键,就会发现右键菜单多了一个选项

        点击 “我要下载所有图片” 即可实现我们的需求了

        调试(查看 background.js 日志与断点)如下图:点击插件的 Service Worker 入口,会弹出调试面板。

        「在该面板中你可以」

        实时查看 background.js 的 console 日志输出;

        在代码中设置断点调试以排查问题。

        总结这一次带你用一个小巧的 Chrome 插件,一键把当前网页的所有图片下载下来,希望对你有所帮助

        ""~

        阅读原文

        跳转微信打开

        Fish AI Reader

        Fish AI Reader

        AI辅助创作,多种专业模板,深度分析,高质量内容生成。从观点提取到深度思考,FishAI为您提供全方位的创作支持。新版本引入自定义参数,让您的创作更加个性化和精准。

        FishAI

        FishAI

        鱼阅,AI 时代的下一个智能信息助手,助你摆脱信息焦虑

        联系邮箱 441953276@qq.com

        相关标签

        Chrome 插件 前端开发 图片下载 浏览器扩展 JavaScript Web Development Chrome Extension Image Downloader
        相关文章