Content Script 是在使用者造訪符合條件的頁面時注入的 JavaScript 腳本。
若設定不當,可能造成:
因此,最佳化注入時機 可以 extension 更穩定、快速,也更節省資源。
在 manifest.json 的 content_scripts 設定中,可以加上 run_at 屬性來指定注入時機
例如:
{
  "content_scripts": [
    {
      "matches": ["https://gitlab.com/*"],
      "js": ["contentScript.js"],
      "run_at": "document_idle"
    }
  ]
}
| 值 | 注入時機 | 適用情境 | 
|---|---|---|
| document_start | 在 HTML 解析開始時注入 | 想要攔截或修改網頁載入流程(如刪除追蹤 script) | 
| document_end | 在 DOM 建立完成但資源尚未完全載入時注入 | 想操作初始 DOM(如插入按鈕、監聽事件) | 
| document_idle | 頁面載入完成後(預設) | 大部分情況,尤其是 UX 類功能(避免干擾頁面載入) | 
除了在 manifest.json 靜態定義外,也可以透過 chrome.scripting.executeScript() 動態注入 Content Script,這樣可以避免在所有分頁自動注入,提高效能。
例如:
// background.js
chrome.action.onClicked.addListener((tab) => {
  chrome.scripting.executeScript({
    target: { tabId: tab.id },
    files: ['contentScript.js']
  });
});
https://gitlab.com/*),不要用 *://*/*。