從擴充套件頁面注入內容指令碼
如果你希望直接控制何時注入內容指令碼,而不是始終根據 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);
}
});