#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;
};
Комментарии:
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 = цвет;
и это сработало.