chrome.scripting.executeScript — Неожиданное свойство: «аргументы»

#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
  });
}