AI 時代的外掛控制實戰:
Chrome Extension 填單助手
1. 專案定位與核心觀念
傳統的網頁自動化或表單填寫常需依賴複雜的大型 RPA 工具。但現在,透過開發一個輕量級的 Chrome 外掛,即可利用簡單的 JS DOM 操作與通訊協定,實現靈活且強大的網頁填單助手。
在進入外掛控制前,我們在課堂開頭先下載並安裝了 FALO Instagram Video Enhancer (v1.0.1) 擴充功能,體驗了外掛如何注入程式碼。接著,我們將延伸此概念:如果我們是要「控制網頁、幫忙進行 ERP 表單自動化」呢?本案將帶您透過實作,直觀理解 Chrome 外掛與網頁 DOM 的通訊控制。
外掛雙向控制核心觀念剖析
content.js 接收到後,透過尋找 CSS Selector 將數值填入對應的 DOM 輸入框中。
content.js 讀取指定 DOM 欄位的 value,並透過 sendResponse 跨視窗回傳填入外掛控制項。
2. V1 網頁操作輔助器 (ERP 表單輔助器)
我們實作的第一個階段是 **ERP 表單輔助器**。當我們載入一個 Chrome Extension 到網頁時,外掛主要進行雙向資料控制:
-
讀取網頁 (Read DOM)檢測頁面上的輸入欄位與系統狀態,並讀取 DOM 節點的 value 值回傳至側邊欄中。
-
修改網頁 (Write DOM)在外掛側邊欄發送寫入指令,將數值填寫進對應的網頁 DOM 輸入框中,填值成功後伴隨亮黃色的填值閃爍視覺反饋。
這代表 Extension 可以完全控制網頁,但是它有一個技術特性與維護要點 (需注意事項):外掛高度依賴網頁的 DOM 結構。只要前端代碼重構、CSS Selector 改變,外掛對應的定位邏輯就需要同步維護與更新,否則將會找不到目標元素而失效。
如果您已經掌握了主線的 ERP 填單助手開發,並想學習如何觀察市面上的產品、利用 AI Agent 進行「模仿、改良、與二創」來開發更具互動性的外掛,我們非常推薦您課後參考延伸案例: 👉 模仿高手的外掛案例:FALO Instagram Video Enhancer v1.0.1 ➔
📡 實體測試網頁 DOM 欄位規格對齊 (DOM Selector Specifications)
外掛之所以能精準控制網頁填單,是因為外掛開發與網頁結構之間遵守同一個 **DOM 規範契約**。當外掛被載入至我們的 實體外掛測試頁 (erp.html) 後,對齊的 DOM 規格定義如下:
| 元件名稱 | CSS Selector (ID) | 資料型態與說明 |
|---|---|---|
| 採購單號輸入框 | #po-number |
String 類型的文字輸入框 |
| 產品代碼輸入框 | #product-code |
String 類型的文字輸入框 |
| 進貨部門選單 | #dept-code |
select 元素,選項包含 PUR, WH, QC, RD |
| 進貨數量輸入框 | #received-qty |
Number 類型的數值輸入框 |
| 產品效期輸入框 | #expiry-date |
Date 類型的日期選擇輸入框 |
| 系統流水序號 | #system-serial-no |
入庫成功後動態生成的序號標記元件 |
| 檢核表單按鈕 | #btn-check-form |
主網頁上驗證欄位格式的按鈕 |
| 確認入庫按鈕 | #btn-submit-entry |
主網頁上正式寫入資料的入庫按鈕 |
🔌 Chrome 擴充功能元件劃分與架構剖析
這是 Chrome 外掛得以加載並運行的**最基本身分與核心權限檔案**。
-
manifest.json
外掛的主設定檔。聲明外掛名稱、版本、權限(如 activeTab、sidePanel)、背景 Service Worker 以及要注入的內容腳本。
-
background.js
背景 Service Worker 腳本。負責調度,例如點擊外掛 Icon 的事件時開啟右側 Side Panel 面板。
-
content.js
直接注入到目標網頁中執行的 JavaScript。擁有直接讀寫網頁 DOM 節點的權力,負責填值與派發事件。
負責呈現介面與實作高級輔助功能。
-
sidepanel.html & sidepanel.js
外掛側邊欄的面板頁面與控制腳本。運行在獨立的 Extension 宇宙中,負責 UI 互動與數據備份,並與 content.js 進行通訊。
-
content.css
隨 content.js 一起注入到目標網頁的 CSS 樣式。專門用來宣告閃爍的 CSS 動畫。
-
erp.html (外掛演練靶機)
**本次課程的實體測試網頁**。模擬企業 ERP 表單,外掛即在此網頁上進行讀寫控制演練。
📡 跨宇宙雙向通訊(Message Passing)架構
3. AI Agent 實戰 Prompt 指南
本實戰引導學員從最簡單的「單欄讀寫」開始,逐步擴展至「全表單批次操作與清空」,最終躍升至具備「CSV 備份與遠端遙控」的完整自動化外掛。
功能目標:最簡單的一進一出,側邊欄僅包含一個「採購單號」輸入欄位以及對應的填入與擷取按鈕。
⚡ 點此展開 ── 專家指點版完整 Prompt (精確代碼生成)
功能目標:直接對齊真實 ERP 網頁五個欄位(含下拉選單),各欄具備獨立讀寫,並有全局一鍵寫入、擷取與清空重置。
⚡ 點此展開 ── 專家指點版完整 Prompt (精確代碼生成)
功能目標:加入隨機產生資料(配合台北時間)、CSV 資料匯出/匯入備份還原,以及遠端遙控檢核、入庫、流水號捕捉與自動下載報告。
⚡ 點此展開 ── 專家指點版完整 Prompt (精確代碼生成)
4. 附錄:V1 網頁外掛核心程式碼剖析
此處列出 V1 階段注入網頁的 Content Script 核心邏輯。學習者可以從代碼中看出「外掛如何透過遍歷 DOM 來理解網頁結構」:
// 遍歷 DOM,篩選頁面上所有的可輸入元素
function getFormFields() {
return Array.from(
document.querySelectorAll(
'input:not([type="submit"]):not([type="hidden"]), select, textarea'
)
);
}
// 根據 DOM 階層與 ID/Name 屬性,計算出唯一的 CSS Selector 路徑
function getCSSSelector(el) {
if (el.id) return `#${el.id}`;
if (el.name) return `${el.tagName.toLowerCase()}[name="${el.name}"]`;
// 向上遞歸父層
const parent = el.parentElement;
if (parent && parent.id) {
return `#${parent.id} > ${el.tagName.toLowerCase()}`;
}
return el.tagName.toLowerCase();
}