Ошибка
Ошибка + ваш комментарий о том, что вам не нужно менять контекст, означает, что вы , вероятно, не на самом деле вводите на обычной веб-странице, которая запускаетсяскрипты контента, но на страницу расширения (с видимым URL chrome-extension://...
).
Все на такой странице не скрипт контента по определению.Даже если этот код также используется совместно со сценарием содержимого, используемым где-то еще.
Обратите внимание, что если вы используете (но не показывает) allFrames: true
для инъекции, вы можете случайно сделать инъекциюв рамке страницы расширения, что приводит к этой ошибке.
Код сценария без содержания
Проблема в том, что вы не можете объявить разрешения хоста для chrome-extension://
страниц.Поэтому вы не можете внедрить скрипты содержимого в эти страницы.
Невозможно определить разрешения для этого только из расширения (чтобы создать расширение, вы можете распространять это «просто работает»), но вы можете сделатьлокально с флагами Chrome + chrome.debugger
API .
Вам нужно будет включить chrome://flags/#silent-debugger-extension-api
и использовать протокол отладчика для выполнения вашего кода.
К сожалению, флаг chrome://flags/#extensions-on-chrome-urls
также не позволяет вводить данные в этот протокол, поэтому у вас есть для использования отладчика.
Код сценария содержимого
Есливы на самом деле пытаетесь найти код в скрипте контента на обычной веб-странице, вы не можете вызвать его из своего собственного скрипта контента, потому что каждое расширение получает свой собственный изолированный контекст JS.
Вам потребуется chrome.debugger
снова.
Код, вставленный в контекст страницы
Иногда вы имеете дело с кодом, который внедряется в саму веб-страницу из скрипта содержимого .
Тогда вы должны быть в состоянииСделайте это с помощью описанного вами метода, выполнив тот же скрипт содержимого -> скачок кода страницы.См. Ссылку выше.
Это не объясняет ошибку, которую вы получаете.