Можно ли использовать Polymer 2 для создания расширения браузера?

Под браузерным расширением я подразумеваю WebExtension https://developer.mozilla.org/ru/Add-ons/WebExtensions.

Я попытался использовать его только для локальных файлов и получил:

Доступ к импортированному ресурсу по адресу «file:///» из источника «null» заблокирован политикой CORS: неверный ответ. Таким образом, Origin 'null' не имеет доступа.

WebExtension (особенно для всплывающих окон настроек) не имеет определенного сервера. Их ссылки будут выглядеть как chrome-extension://pkngljipephggpkgjfkjhggmcjfmhgkn/page.html.


person Rustam    schedule 19.05.2017    source источник
comment
Ответ положительный. Это ошибка, которую вы получаете из-за другой проблемы. CORS — это ошибка запроса перекрестного происхождения. что ты делал, когда получил именно это   -  person Gary    schedule 19.05.2017
comment
Просто импорт HTML   -  person Rustam    schedule 19.05.2017
comment
Что-то идет не так, как вы импортируете. Это не ошибка, связанная с полимером. может что-то в хроме блокирует. Вы пробовали jquery или что-то еще, чтобы проверить, что идет не так?   -  person Gary    schedule 19.05.2017
comment
я видел, как несколько человек спрашивали здесь, в stackoverflow, когда они разрабатывали некоторые расширения для браузера, так что да, это возможно, но я не знаю ни о каких учебниках или статьях.   -  person Kuba Šimonovský    schedule 19.05.2017


Ответы (2)


Инструменты Vulcanize и Crisper можно использовать для обхода проблем CORS/CSP.

Много инструкций здесь: https://www.polymer-project.org/1.0/docs/tools/optimize-for-production

Оба инструмента имеют подключаемые модули Gulp, поэтому вы можете написать сценарий сборки следующим образом:

gulp.task('vulcanize', function() {
  return gulp.src('index.html')
    .pipe(vulcanize({
      inlineScripts: true,
      inlineCss: true
    }))
    .pipe(crisper())
    .pipe(gulp.dest('popup'));
});
person Torrey    schedule 10.03.2018

Обновленный ответ после года выпуска

Я использовал Polymer 1 и Polymer 3. Для обоих вам нужно создать целую экосистему здания. В случае полимера 3 это очень и очень сложно из-за НЕПРАВИЛЬНОСТИ! документация для polymer-build (не читайте документацию, читайте исходный код напрямую)


Только что проверил и вот ответ. Кратко: да, но с осложнениями.

После вставки только одного элемента Polymer я получил много ошибок: Отказ от выполнения встроенного сценария, поскольку он нарушает следующую директиву политики безопасности содержимого: «script-src 'self'». Для включения встроенного выполнения требуется либо ключевое слово unsafe-inline, либо хэш ('sha256-AYzkEOy570v3pgwSjL36msfNQGIBNCoa6ppxJtI8Fag='), либо одноразовый номер ('nonce-...').

В требованиях к расширению Chrome 31+ - поэтому я не могу изменить политику безопасности контента. Я не могу использовать встроенные теги <script> ни для каких шаблонов.

Поэтому я изменил код Polymer, переместив все встроенные скрипты в отдельные скрипты, и это сработало.

Минусы: я не могу сделать автоматическое обновление кода, если будет обновляться Polymer. Каждый раз мне нужно переписывать его код.

person Rustam    schedule 20.05.2017