從擴充套件頁面注入內容指令碼

如果你希望直接控制何時注入內容指令碼,而不是始終根據 URL 注入內容指令碼,則可以使用 Programmatic Injection

最小的例子

  • JavaScript 的

    chrome.tabs.executeScript({file: "content.js"});
    
  • CSS

    chrome.tabs.insertCSS({file: "content.css"});
    

從擴充套件頁面(例如後臺或彈出視窗)呼叫,並假設你有權注入,這將執行 content.js 或插入 content.css 作為當前選項卡頂部框架中的內容指令碼。

內聯程式碼

你可以執行內聯程式碼而不是檔案作為內容指令碼:

var code = "console.log('This code will execute as a content script');";
chrome.tabs.executeScript({code: code});

選擇選項卡

你可以提供選項卡 ID(通常來自其他 chrome.tabs 方法或訊息傳遞),以在當前活動的選項卡中執行。

chrome.tabs.executeScript({
  tabId: tabId,
  file: "content.js"
});

chrome.tabs.executeScript() 文件和其他示例中提供了更多選項。

許可權

使用 chrome.tabs.executeScript() 不需要 tabs 許可權,但需要頁面 URL 的主機許可權

檢查錯誤

如果指令碼注入失敗,可以在可選的回撥中捕獲它:

chrome.tabs.executeScript({file: "content.js"}, function() {
  if(chrome.runtime.lastError) {
    console.error("Script injection failed: " + chrome.runtime.lastError.message);
  }
});