前端還原頁面你肯定幹過吧?像仿 xxx 首頁那種。收素材時最煩的就是一張張存圖,慢不說還老漏。
跟我用 10 分鐘做個 Chrome 小插件,點一下,整頁圖片全下到本地。
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"
}
}
字段 | 说明 |
---|---|
manifest_version: 3 | 使用最新的 Manifest V3 擴展規範 |
name | 插件名稱 |
version | 插件版本號 |
permissions | 申請權限(contextMenus 創建右鍵菜單,downloads 下載) |
background.js 後台腳本負責創建並響應右鍵菜單等事件來下載頁面圖片。
// 1. 插件安裝時創建右鍵菜單
chrome.runtime.onInstalled.addListener(() => {
chrome.contextMenus.create({
id: 'downloadAllImages', // 菜單唯一標識
title: '我要下載所有圖片', // 菜單顯示的文字
contexts: ['page'], // 在頁面任意位置右鍵時顯示
});
});
// 2. 監聽右鍵菜單點擊事件
chrome.contextMenus.onClicked((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://extensions/
並回車選擇剛剛創建的 image-downloader-extension 資料夾進行加載。
你會看到插件出現在列表中。
至此,我們的下載插件就搞完了,是不是非常容易?
接下來我們隨便打開一個網站,點擊滑鼠右鍵,就會發現右鍵菜單多了一個選項。
點擊 “我要下載所有圖片” 即可實現我們的需求了。
這一次帶你用一個小巧的 Chrome 插件,一鍵把當前網頁的所有圖片下載下來,希望對你有所幫助。
如果覺得對您有幫助,歡迎點贊 👍 收藏 ⭐ 关注 🔔 支持一下!
往期實戰推薦: