Chrome.tabs.executeScript не работает?

Я пытаюсь научиться использовать chrome.tabs.executeScript. Я создал простое расширение с действием браузера. Мой файл background.html в настоящее время выглядит следующим образом:

<html>
<script>
    chrome.browserAction.onClicked.addListener(function(tab) {
        chrome.tabs.executeScript(null,{code:"document.body.bgColor='red'"});
        chrome.tabs.executeScript(null, {file: "content_script.js"});
    });
</script>
</html>

Файл "content_script.js" содержит document.body.bgColor = 'red'.

При нажатии кнопки действия браузера ничего не происходит. Очевидно, что я пропускаю что-то очень простое.

Я проверил с console.log, который действительно контролирует доступ к вызовам chrome.tabs.executeScript при нажатии на действие браузера. В противном случае я не уверен, как даже проверить, не запущен ли мой контент script (похоже, нет: console.log, который я вставлял в контент script, не имеет никакого эффекта, но, возможно, он не должен иметь его, даже если script выполняется успешно).

Ответы

Ответ 1

Убедитесь, что в манифесте есть права на домен и вкладку:

"permissions": [
    "tabs", "http://*/*", "https://*/*"
]

Затем, чтобы изменить цвет тела, попробуйте:

chrome.tabs.executeScript(null,{code:"document.body.style.backgroundColor='red'"});

Также имейте в виду, что скрипты содержимого не вставляются ни в страницы chrome://, ни в галерею расширений.

Ответ 2

Для тех из вас, у кого есть проблемы, вам необходимо перезагрузить разрешения на расширение в Chrome.

Перейдите к chrome://extensions, прокрутите список до своего расширения и нажмите "перезагрузить". Убедитесь, что ваши разрешения были обновлены, щелкнув ссылку разрешений рядом с вашим расширением.

Ответ 3

Вам действительно не нужно и не нужно разрешение "tabs" для executeScript.

"permissions": [
  "http://*/*", 
  "https://*/*"
]

Должно быть достаточно