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://*/*"
]
Должно быть достаточно