Как отправить JavaScript на указанную c вкладку в Chrome Расширение? - PullRequest
0 голосов
/ 10 апреля 2020

Спасибо за помощь.

Сейчас я работаю над расширением chrome. У меня есть фоновый скрипт расширения, который использует функцию для открытия новых вкладок в браузере для выполнения различных «задач». Функция использует переменные, полученные из API, для определения URL вкладки и в какое время ее открывать и т. Д. c.

Вот моя функция:

function NewTask(var1, var2, var3) { 
chrome.tabs.create({url: var1+var2+var3, active: false}, tab=>{
    tab.console.log(var5, var6)
})

}

Как видите, я пытаюсь использовать console.log var5 и var6 на новой вкладке в качестве примера. Однако, это не работает так, как я хотел. Есть ли способ передать переменные var5 и var6 через функцию на новую вкладку?

1 Ответ

0 голосов
/ 10 апреля 2020

Это один из наиболее запутанных аспектов расширений. 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}` }
    )
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...