【前端效率工具】:告别右键另存,不到 50 行代码一键批量下载网页图片

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

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

先看效果:在素材网站一键批量保存所有图片

废话不多说,直接上手!

项目结构

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

创建文件夹 image-downloader-extension

创建manifest.json文件

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

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文件

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`, // 保存路径
              saveAs: false, // 不弹出保存对话框
            });
          }, index * 500); // 每张图片间隔 500ms,避免浏览器限制
        });
      }
    );
  }
});

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

  return images;
}

API 文档速查

4. 加载插件到浏览器

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

步骤:
4.1 打开扩展管理页面 在 Chrome 地址栏输入 chrome://extensions/ 并回车
4.2 开启开发者模式
4.3 点击 "加载未打包的扩展程序"

选择刚刚创建的image-downloader-extension文件夹进行加载

4.4 插件加载成功

你会看到插件出现在列表中

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

测试

接下来我们随便打开一个网站,点击鼠标右键,就会发现右键菜单多了一个选项

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

总结

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

相关推荐
一袋米扛几楼986 分钟前
【网络安全】SIEM -Security Information and Event Management 工具是什么?
前端·安全·web安全
小陈工17 分钟前
2026年4月7日技术资讯洞察:下一代数据库融合、AI基础设施竞赛与异步编程实战
开发语言·前端·数据库·人工智能·python
Cobyte26 分钟前
3.响应式系统基础:从发布订阅模式的角度理解 Vue2 的数据响应式原理
前端·javascript·vue.js
竹林81830 分钟前
从零到一:在React前端中集成The Graph查询Uniswap V3池数据实战
前端·javascript
Mintopia37 分钟前
别再迷信"优化":大多数性能问题根本不在代码里
前端
倾颜38 分钟前
接入 MCP,不一定要先平台化:一次 AI Runtime 的实战取舍
前端·后端·mcp
军军君0140 分钟前
Three.js基础功能学习十八:智能黑板实现实例五
前端·javascript·vue.js·3d·typescript·前端框架·threejs
恋猫de小郭40 分钟前
Android 上为什么主题字体对 Flutter 不生效,对 Compose 生效?Flutter 中文字体问题修复
android·前端·flutter
Moment42 分钟前
AI全栈入门指南:一文搞清楚NestJs 中的 Controller 和路由
前端·javascript·后端
禅思院42 分钟前
前端架构演进:基于AST的常量模块自动化迁移实践
前端·vue.js·前端框架