从扩展页面注入内容脚本

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