Комментарии 6
Чтобы разрешить использование
userScripts API
, пользователь должен помимо этого обязательно включить еще и галочкуDeveloper mode (Режим разработчика)
на странице списка установленных расширений.
Используйте:
chrome.scripting.executeScript(
injection: ScriptInjection,
callback?: function,
)
Потому что в Chrome реализовано только подключение JS-скриптов. Но разве это проблема?
Конечно не проблема:
chrome.scripting.insertCSS(
injection: CSSInjection,
callback?: function,
)
chrome.scripting.executeScript
в данном случае не подойдет, т. к. в качестве аргумента требует либо указать файл js для выполнения, либо функцию. Т. е. данный метод предназначен для фиксированного, заранее прописанного в расширении js-кода. В данном же случае нам нужно выполнить динамический произвольный код, извлекаемый из локального хранилища. Т. е. нам нужно по сути выполнить код, который хранится в строковом виде, типа "let h = 'hello, world!'; alert(h);"
. Используя executeScript
, мы такой код в виде строки не запустим, использовать eval
Chrome не дает из-за ограничений безопасности.
А вот с chrome.scripting.insertCSS
, думаю, вы правы, вполне можно было бы использовать. Другое дело, что по трудозатратности такой вариант ни в чем не выигрывает - нужно самостоятельно выполнять проверку текущего адреса с сохраненными шаблонами URL и подцеплять CSS. К тому же, если я уже все равно использую userScripts
для хранения js-кода, вполне удобно обернуть CSS в JS и использовать один и тот же функционал и для скриптов, и для стилей, т.е. работать с ними как с идентичными объектами.
Для executeScript, можно использовать Ваш подход к CSS.
Вы имеете ввиду внедрение кода через вставку элемента script
в DOM дерево? Нет, такой вариант тоже не проходит. Chrome запрещает вставку любого динамического js-кода в обход официального API userScripts
. Если не ошибаюсь, в Manifest V2 такой подход работал, но сейчас в 3-й версии ужесточили этот момент.
del
Тварь ли я дрожащая или право имею? Берем чужие сайты под свой контроль. Часть 2 — Пользовательские скрипты в Chrome