Блин, 21 век, а поисковики до сих пор тупыеНас обманывают

Баг у youtube embed

Я бы даже сказал, не баг, а недоработка, а ещё, вероятно, специально так сделали.

Суть в том, что в коде стоит загрузка js-кода не по http:// схеме, а по //

Код:

<div id="player" class="full-frame"></div> <script id="js-1235545350" class="www-embed-player" src="//s.ytimg.com/yts/jsbin/www-embed-player-vflR7Oyxi.js" data-loaded="true"></script>
<script id="js-705491848" class="html5player" src="//s.ytimg.com/yts/jsbin/html5player-vflGNjMhJ.js" data-loaded="true"></script>
<script>yt.setConfig(

Всё это прекрасно работает в iframe, размещённых на https*:// схеме, а вот в расширениях для Хрома с их схемой chrome-extension:// это нифига не грузится.

Возникает Uncaught ReferenceError: yt is not defined , ибо код, где yt создаётся, находится в файле html5player-vflGNjMhJ.js

Соответственно, плеер не запускается и видео не видно.

Какой выход?

1. Запускать расширение как content-скрипт на каком-нибудь http домене, можно даже локальном;

2. Создать content-скрипт, который будет внедряться в youtube embed, берём любые ссылки на скрипты без схемы и запоминаем их для этого домена (и/или для подобных страниц) в настройках, и соответственно, в будущем грузим их в начале страницы. То есть, content-скрипт просто запустит перегрузку страницы после сохранения скриптов, если js-файлов из расширения не поступило (первый запуск) и на странице есть скрипты без схемы.
Для простоты хранения данных (и простоты обмена и ненаписания лишнего кода в ядре расширения) можно эти скрипты хранить прямо внутри iframe в localStorage.

Update: Можно использовать вот эту библиотеку