Como faço para permitir uma extensão do google chrome para aceder a uma API de terceiros script?

0

Pergunta

Estou tentando acessar um script a partir do YouTube player iframe API para reproduzir/pausar um vídeo, por uma extensão do google chrome. Meu JS é abaixo (a partir de 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();
}

No entanto, quando eu carregar a extensão para Chrome, recebo o seguinte erro:

Recusou-se a carregar o script 'https://www.youtube.com/iframe_api' porque viola o seguinte Conteúdo da Política de Segurança da directiva: "script src 'auto'". Note que o 'script src-elém' não foi explicitamente definido, portanto, 'script src" é usado como um fallback.

Eu tentei adicionar o URL para o CSP no Manifesto.json (abaixo). Eu também removido todo inline JS.

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

Agora, a extensão falha ao carregar com um erro que o meu CSP valor é inválido. Alguma idéia do que eu estou fazendo de errado?

1

Melhor resposta

0

Você pode verificar o chrome.script.executeScript(), isso permite que você carregar a biblioteca e, em seguida, executar um código que utiliza. Para fazer isso você precisa tê-lo na mesma pasta como o resto da extensão (apenas copiar a biblioteca de um arquivo js). O código que usa a biblioteca deve ser executado depois que a promessa inicial do google chrome.script.executeScript é resolvido.

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

2021-11-25 08:52:09

Eu copiei a API em meu código e usado o chrome.script.executeScript(), e funcionou! Muito obrigado!
weissguy

Em outros idiomas

Esta página está em outros idiomas

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................