Как разрешить расширению chrome доступ к стороннему API-скрипту?

0

Вопрос

Я пытаюсь получить доступ к сценарию из API плеера iframe YouTube, чтобы воспроизвести/приостановить видео для расширения chrome. Мой JS находится ниже (от https://developers.google.com/youtube/iframe_api_reference).

var tag = document.createElement('script');
tag.src = "https://www.youtube.com/iframe_api";
var firstScriptTag = document.getElementsByTagName('script')[0];
firstScriptTag.parentNode.insertBefore(tag, firstScriptTag);

var player;

function onYouTubePlayerAPIReady() {
    player = new YT.Player('video', {
        events: {
            'onReady': onPlayerReady
        }
    });
}

function onPlayerReady(event) {
    player.playVideo();
}

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

Отказался загружать скрипт 'https://www.youtube.com/iframe_api" потому что это нарушает следующую директиву политики безопасности содержимого: "script-src 'self'". Обратите внимание, что "script-src-элемент" не был задан явно, поэтому "script-src" используется в качестве запасного варианта.

Я попытался добавить URL-адрес в CSP в Manifest.json (ниже). Я также удалил все встроенные JS.

"content_security_policy": "script-src 'self' https://www.youtube.com/iframe_api; object-src 'self'"

Теперь расширение не загружается с ошибкой, указывающей, что мое значение CSP недопустимо. Есть идеи, что я делаю не так?

1

Лучший ответ

0

Вы можете проверить chrome.scripting.executeScript(), это позволяет загрузить библиотеку, а затем выполнить некоторый код, который ее использует. Для этого вам нужно поместить его в ту же папку, что и остальное расширение (просто скопируйте библиотеку в файл js). Код, использующий библиотеку, должен быть выполнен после устранения первоначального обещания chrome.scripting.executeScript.

https://developer.chrome.com/docs/extensions/reference/scripting/#usage

2021-11-25 08:52:09

Я скопировал API в свой код и использовал chrome.scripting.executeScript(), и это сработало! Большое вам спасибо!
weissguy

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................