Come faccio a consentire una estensione di google chrome per accedere a un API di terze parti script?

0

Domanda

Sto cercando di accedere a uno script da YouTube iframe giocatore API per riprodurre/mettere in pausa un video, per una estensione di google chrome. Il mio JS è sotto (da 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();
}

Tuttavia, quando carico l'estensione per Chrome, ottengo il seguente errore:

Ha rifiutato di caricare lo script 'https://www.youtube.com/iframe_api' perché viola il seguente Contenuto Politica di Sicurezza direttiva: "script src 'sé'". Nota che 'script src-elem' stata impostata in modo non esplicito, cosi 'script src' viene utilizzato come una soluzione di ripiego.

Ho provato ad aggiungere l'URL del CSP nel Manifesto.json (sotto). Ho anche rimosso tutti inline JS.

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

Ora, l'estensione non riesce a caricare con un errore che il mio CSP valore non è valido. Qualsiasi idea di cosa sto facendo di sbagliato?

1

Migliore risposta

0

È possibile controllare il cromo.scripting.executeScript(), questo consente di caricare la libreria e quindi eseguire una parte di codice che utilizza. Per farlo è necessario essere nella stessa cartella, come il resto dell'estensione (basta copiare la libreria di un file js). Il codice che utilizza la libreria deve essere eseguito dopo la promessa iniziale di chrome.scripting.executeScript è stato risolto.

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

2021-11-25 08:52:09

Ho copiato le API nel mio codice e usato chrome.scripting.executeScript(), e ha funzionato! Grazie mille!
weissguy

In altre lingue

Questa pagina è in altre lingue

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