Cum pot permite o extensie chrome pentru a accesa un al treilea-petrecere API script?

0

Problema

Eu sunt încercarea de a accesa un script de pe YouTube e iframe player API, în scopul de a reda/întrerupe redarea unui clip video, pentru o extensie chrome. Mi JS este mai jos (de la 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();
}

Cu toate acestea, atunci când am încărca extensie pentru Chrome, primesc următoarea eroare:

A refuzat pentru a încărca script 'https://www.youtube.com/iframe_api' deoarece încalcă următorul Conținut Politica de Securitate directiva: "script-src "sine"". Rețineți că, 'script-src-elem' nu a fost stabilit în mod explicit, deci, 'script-src este folosit ca o rezervă.

Am încercat adăugarea URL-ul pentru a CSP în Manifest.json (de mai jos). Am eliminat, de asemenea, toate inline JS.

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

Acum, extensia nu reușește să se încarce cu o eroare care mi CSP valoare este invalid. Orice idee ce fac gresit?

1

Cel mai bun răspuns

0

Puteți verifica chrome.scripting.executeScript(), acest lucru vă permite să încărcați o bibliotecă și apoi executa codul pe care îl folosește. Pentru a face acest lucru trebuie să-l aibă în același folder ca restul de extensie (doar copia biblioteca de la un fișier js). Codul care foloseste biblioteca trebuie să fie executate după promisiunea inițială de google chrome.scripting.executeScript este rezolvată.

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

2021-11-25 08:52:09

Am copiat API în codul meu și folosit chrome.scripting.executeScript(), si a functionat! Vă mulțumesc atât de mult!
weissguy

În alte limbi

Această pagină este în alte limbi

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