Не удается прочитать свойство ‘executeScript’ undefined

#google-chrome-extension

#google-chrome-extension

Вопрос:

Я следую руководству «Начало работы» по расширениям Chrome, но получаю приведенную ниже ошибку.

Я ищу в Google, кто-то говорит, что не может получить доступ к ‘executeScript’ в content.js , но ошибка заключается в том, что popup.js .

Я пытался изменить ‘chrome.scripting.executeScript’ на ‘chrome.tabs.executeScript’, это тоже не сработало.

изображение ошибки

manifest.json

 {
    "name": "Getting Started Example",
    "version": "1.0",
    "description": "Build an Extension!",
    "permissions": ["storage", "declarativeContent", "activeTab"],
    "background": {
        "scripts": ["background.js"],
        "persistent": false
    },
    "page_action": {
        "default_popup": "popup.html"
    },
    "options_page": "options.html",
    "manifest_version": 2
} 

popup.js

 let changeColor = document.getElementById('changeColor')

chrome.storage.sync.get('color', function(data) {
    changeColor.style.backgroundColor = data.color;
    changeColor.setAttribute('value', data.color)
});

changeColor.addEventListener('click', () =>
chrome.tabs.query({active: true, currentWindow: true}, function(tabs) {
  chrome.scripting.executeScript(
      tabs[0].id,
      { function: setColor })
})
);

async function setColor() {
let {color} = await chrome.storage.sync.get(['color']);
document.body.style.backgroundColor = color;
}; 

Весь код расширения

ссылка: разработчики Chrome -> Начало работы

Комментарии:

1. Удалите расширение со страницы расширений Chrome, а затем снова загрузите распакованное расширение.

2. Если вы добавили разрешения в файл манифеста, и он все еще не работает, просто нажмите кнопку перезагрузки на карточке расширения на странице расширений. (Нет необходимости извлекать и перезагружать вручную).

Ответ №1:

В ваших разрешениях manifest.json отсутствует один элемент, а именно "scripting" .

Это должно выглядеть так:

 …
"permissions": ["storage", "declarativeContent", "activeTab", "scripting"],
…
 

На самом деле это видно на странице «Начало работы» здесь.

Комментарии:

1. Я добавил сценарии, но получаю ту же ошибку

Ответ №2:

Для доступа к API сценариев вам нужны разрешения на создание сценариев. Добавьте scripting в свой manifest.js файл.

 "permissions": ["scripting", ...]
 

Ответ №3:

Вам необходимо либо перейти на manifest v3, либо использовать chrome.tabs.executeScript вместо chrome.scripting.executeScript

Ответ №4:

В моем случае журнал исключений «Не удается прочитать свойство ‘executeScript’ неопределенного» был довольно вводящим в заблуждение.

При правильных манифестах это произошло, и это было из-за опечатки в вводимой функции, как показано ниже.

document.body.style.backgrounColor = цвет;

исправил его на document.body.style.backgroundColor = цвет;

и это сработало.