狂野飙车6鸿蒙版
471.84M · 2025-10-31
点赞 + 收藏 === 学会🤣🤣🤣

image-downloader-extension ├── manifest.json # 扩展的"身份证" └── background.js # 插件后台脚本
image-downloader-extension这个文件是插件的身份证,告诉浏览器你的插件是谁、能干啥。
{
"manifest_version": 3,
"name": "我的下载插件",
"version": "1.0.0",
"permissions": ["contextMenus", "downloads", "scripting"],
"host_permissions": ["<all_urls>"],
"background": {
"service_worker": "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`, // 保存路径
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 文档速查
chrome.runtime(扩展生命周期/事件)
chrome.contextMenus(右键菜单)
chrome.scripting(脚本执行)
chrome.downloads(下载管理)
权限声明(MV3)
接下来我们将插件加载到浏览器中

chrome://extensions/ 并回车选择刚刚创建的image-downloader-extension文件夹进行加载
你会看到插件出现在列表中

至此,我们的下载插件就搞完了,是不是非常容易?
接下来我们随便打开一个网站,点击鼠标右键,就会发现右键菜单多了一个选项

点击“我要下载所有图片” 即可实现我们的需求了
如下图:点击插件的 Service Worker 入口,会弹出调试面板。
在该面板中你可以:
实时查看 background.js 的 console日志输出;
在代码中设置断点调试以排查问题。

