動態

詳情 返回 返回

【前端效率工具】:告別右鍵另存,不到 50 行代碼一鍵批量下載網頁圖片 - 動態 詳情

🧑‍💻 寫在開頭

點贊 + 收藏 === 學會🤣🤣🤣

 

先看效果:在素材網站一鍵批量保存所有圖片

企業微信截圖_20251027165054

廢話不多説,直接上手!

項目結構

image-downloader-extension
├── manifest.json      # 擴展的"身份證"
└── background.js      # 插件後台腳本
  1. 創建文件夾 image-downloader-extension

  2. 創建manifest.json文件

這個文件是插件的身份證,告訴瀏覽器你的插件是誰、能幹啥。

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

關鍵點解讀:

企業微信截圖_20251027170154

 

  1. 創建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)

4. 加載插件到瀏覽器

接下來我們將插件加載到瀏覽器中

 

93948d7109204fdab10270ae2c0dfe78~tplv-73owjymdk6-jj-mark-v1_0_0_0_0_5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5LiN5LiA5qC355qE5bCR5bm0Xw==_q75

步驟:
4.1 打開擴展管理頁面 在 Chrome 地址欄輸入 chrome://extensions/ 並回車
4.2 開啓開發者模式
4.3 點擊 “加載未打包的擴展程序”

選擇剛剛創建的image-downloader-extension文件夾進行加載

4.4 插件加載成功

你會看到插件出現在列表中

企業微信截圖_20251027165120

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

測試(驗證功能)

接下來我們隨便打開一個網站,點擊鼠標右鍵,就會發現右鍵菜單多了一個選項

企業微信截圖_20251027165126

點擊“我要下載所有圖片” 即可實現我們的需求了

調試(查看 background.js日誌與斷點)

如下圖:點擊插件的 Service Worker 入口,會彈出調試面板。

在該面板中你可以:

  • 實時查看 background.js 的 console日誌輸出;
  • 在代碼中設置斷點調試以排查問題。

d923a7711c2c4238b67c3582006acc7c~tplv-73owjymdk6-jj-mark-v1_0_0_0_0_5o6Y6YeR5oqA5pyv56S-5Yy6IEAg5LiN5LiA5qC355qE5bCR5bm0Xw==_q75

 

如果對您有所幫助,歡迎您點個關注,我會定時更新技術文檔,大家一起討論學習,一起進步。

user avatar grewer 頭像 pantao 頭像 jackn 頭像 ysxq 頭像 stephentian 頭像 jibvxiz 頭像 hulaxingxingxing 頭像 jiangdaoyidezuoyeben 頭像 wupeng_5a4de5c290b9d 頭像 jinshideshizi 頭像
點贊 10 用戶, 點贊了這篇動態!
點贊

Add a new 評論

Some HTML is okay.