¿Cómo puedo permitir que una extensión de chrome para acceder a una API de terceros script?

0

Pregunta

Estoy tratando de acceder a un script de YouTube del iframe player API para reproducir/pausar un vídeo, de una extensión de chrome. Mi JS es de abajo (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();
}

Sin embargo, cuando se carga la extensión para Chrome, me sale el siguiente error:

Se niega a cargar la secuencia de comandos 'https://www.youtube.com/iframe_api' porque viola el siguiente Contenido de la Política de Seguridad de la directiva: "script src 'yo'". Tenga en cuenta que el script src-elem' no se establece explícitamente, de modo que 'script src" se usa como un retroceso.

He intentado añadir la URL a la CSP en el Manifiesto.json (abajo). También he quitado todos en línea JS.

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

Ahora, la extensión no se puede cargar con un error de que mi CSP valor no es válido. Alguna idea de lo que estoy haciendo mal?

1

Mejor respuesta

0

Puede comprobar el chrome.de secuencias de comandos.executeScript(), esto le permite cargar la biblioteca y, a continuación, ejecute el código que utiliza. Para ello tendrá que tener en la misma carpeta que el resto de la extensión (sólo tienes que copiar la biblioteca a un archivo js). El código que utiliza la biblioteca debe ser ejecutada después de la promesa inicial de chrome.de secuencias de comandos.executeScript se ha resuelto.

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

2021-11-25 08:52:09

He copiado el API en mi código y utilizar chrome.de secuencias de comandos.executeScript (), ¡y funcionó! Muchas gracias!
weissguy

En otros idiomas

Esta página está en otros idiomas

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