Это один из наиболее запутанных аспектов расширений. chrome.tabs.create
работает в «фоне» расширения (где у него есть доступ для управления вкладками с помощью tabId)
Таким образом, обратный вызов, который вы передаете в качестве последнего параметра, также выполняется в фоновом режиме, чтобы запустить javascript на определенной вкладке вы можете использовать
chrome.tabs.executeScript(tabId, { code: `console.log("I run in the tab, not the background!")` })
Код, запущенный на вкладке, передается в виде строки. Если вы хотите передать переменную из фонового скрипта, вы можете сделать это, как показано ниже (если использование "string ${variable}
" сбивает с толку, проверьте Интерполяция выражений )
var urlFromBackground = "https://google.com"
var colorFromBackground = "rebeccapurple"
chrome.tabs.create({url: urlFromBackground, active: false}, tab=>{
chrome.tabs.executeScript(
tab.id,
{ code: `document.body.background = ${colorFromBackground}` }
)
})