Вопрос по – Соответствует ли content_scripts «chrome-extension: // * / *»?

7

Я хочу запустить скрипт содержимого в iframe с расширением chrome: // URL. Я добавил строку в мой manifest.json, которую скопировал из документацииhttp://code.google.com/chrome/extensions/match_patterns.html

<code> chrome-extension://*/*
</code>

Но когда я перезагружаю свое расширение, я получаю предупреждение:

<code>Could not load extension from '/work/sirius/extension'. 
Invalid value for 'content_scripts[2].matches[0]': Invalid scheme.
</code>

Любая идея, как заставить это работать?

Как отмечается в ответе @Konstantin Smolyanin ниже, документация теперь ничего не говорит о способности внедрять контент-скрипты вchrome-extension: страницы. Dave Land

Ваш Ответ

3   ответа
8

http: //code.google.com/chrome/extensions/match_patterns.htm ясно сказано, что они принимаютchrome-extension://*/* пока нет.

Им нужно обновить API, чтобы не запутывать людей.

Как @ Константин Смолянин отвечает ниже, документация обновлена. Dave Land
Существует открытая проблема для исправления документации: Code.google.com / р / хром / вопросы / детали? ID = 153245 rsanchez
8

ftp:, file:, http: а такжеhttps: может соответствовать объявлению скрипта содержимого.

Неверные шаблоны URL в любом изmatches а такжеexclude_matches поля отклоняются (выдает ошибку при попытке загрузить расширение).

Неправильные шаблоны наpermissions опция в файле манифеста игнорируются.

Если вы хотите запустить скрипт на вкладке из своего расширения, используйтеchrome.extension.getViews в вашем фоновом скрипте. Более того, создавайте страницы вашего расширения так, чтобы они эффективно общаться друг с другом (приме).

Я хочу запустить скрипт содержимого для iframe на веб-странице. chrome.extension.getViews () позволяет использовать скрипты для расширений, а не для веб-страниц. johnjbarton
Я реализую механизм обмена сообщениями на основе postMessage в iframe, но iframe - это не мой код. Поэтому я хочу, чтобы content_scripts позволял мне вводить конечную точку postMesssage (). johnjbarton
Приведенная выше ссылка на «опцию разрешений в файле манифеста» подтолкнула меня к расследованию с использованием программной инъекции скриптов. К сожалению, это тоже не сработает: веб-приложение, в котором размещено расширение chrome: // iframe, не может запустить код расширения, необходимый для внедрения в его iframe. Возможно, я смогу написать отдельное расширение для программного внедрения, когда вкладка имеет соответствующий URL. johnjbarton
@ johnjbarton Ты прав. Не видя ошибки при попытке выбора разрешения, я предположил, что это допустимое значение. После дальнейшего изучения я обнаружил, что для недопустимых шаблонов не генерируются ошибки. Rob W
Я попробовал программную инъекцию из расширения. Это также дает сбой, потому что сами iframe добавляются программно, а chrome.tabs.executeScript () даже с «allFrames: true» срабатывает только при разборе html. Возможно, скрипт содержимого в веб-приложении, который отслеживает фреймы, соответствующие расширению chrome: // url, а затем отправляет фоновую страницу для вызова chrome.tabs.executeScript (). Но это за мой предел для глупых хитрых: - johnjbarton
5

что авторы Chrome молча удалили возможность вставки скриптов содержимого вchrome-extension: страниц.Документаци по-прежнему говорит, что работает и даже содержит примеры с Хром расширение: схема, но на самом деле это не работает. Так что теперь толькоhttp:, https: а такжеftp: работа "из коробки" иfile: может работать, если пользователь вашего расширения включил это на странице расширений (chrome: // extensions /).

Обновить Теперь упомянутая выше документация обновлена и ничего не говорит о возможности внедрения контентных сценариев вchrome-extension: страницы.

Похожие вопросы