#javascript #google-chrome #google-chrome-extension
Вопрос:
Я пытаюсь использовать chrome.scripting.executeScript для расширения chrome, которое я создаю в ManifestV3 и следую документации Google здесь (см. Изображение ниже).:
Я добавил свойство «аргументы» для передачи в заголовке текущей вкладки моей функции. Однако я получаю следующее сообщение об ошибке:
TypeError: Error in invocation of scripting.executeScript(scripting.ScriptInjection injection, optional function callback): Error at parameter 'injection': Unexpected property: 'arguments'.
Вот мой код:
chrome.tabs.query({ active: true }, function (tabs) {
let tab = tabs[0];
chrome.scripting.executeScript(
{
target: { tabId: tab.id },
function: myFunction,
arguments: [tab.title],
},
(injectionResults) => displaySearch(injectionResults[0].result)
);
});
Любая помощь будет признательна, спасибо!
Комментарии:
1. Может быть, это поможет в создании сценария
2. crbug.com/1166720 , это еще не реализовано.
3. Нашли какой-нибудь обходной путь для передачи аргументов?
4. не аргументы , а что-то вроде аргументов
args: [param1, param2, param3]
.
Ответ №1:
Для этого существует обходной путь, который вы можете использовать до тех пор, пока они не реализуют эту функцию с помощью chrome.storage. Что вам нужно сделать , так это сначала сохранить аргумент chrome.storage.sync.set()
, а затем извлечь его внутри функции, которую вы вводите с помощью chrome.storage.sync.get()
.
chrome.storage.sync.set({ myVariable: valueOfVariable });
chrome.tabs.query({ active: true }, function (tabs) {
let tab = tabs[0];
chrome.scripting.executeScript(
{
target: { tabId: tab.id },
function: myFunction,
}
);
});
function myFunction() {
chrome.storage.sync.get(["myVariable"], ({ myVariable }) => {
// Do stuff
});
}