从扩展页面注入内容脚本
如果你希望直接控制何时注入内容脚本,而不是始终根据 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);
}
});