J'ai du mal à charger et à exécuter un script JS externe dans mon extension chromée. On dirait la même chose que Cette question , mais je ne peux toujours pas comprendre Pourquoi cela ne fonctionne pas dans mon cas.
L'idée est que je souhaite avoir dans mon script de contenu, une fonction par défaut qui devrait analyser un contenu de page Web. Et pour certaines pages Web spécifiques, je souhaite charger et utiliser des analyseurs spécifiques, j'essaie donc de charger un script JS-JS-Script pour une page WEP, et ce script devrait prolonger la fonctionnalité de l'analyseur par défaut. P>
J'essaie uniquement d'exécuter du code à partir d'un script externe, mais d'une telle erreur: } p> Ceci est popup.html strong> p > et dans Qu'est-ce que je suis mal , ai-je oublié quelque chose? Ou devrais-je utiliser une autre approche pour résoudre le problème? P> p> non cochéra runtime.lasterror lors de l'exécution d'onglets.Executscript: Aucun code source ou fichier spécifié sur objet.callback code> p> P> P> P> Ceci est mon manifeste.json strud>: p>
3 Réponses :
Les scripts d'exécution des sources externes telles que vous essayez sont interdits par Google Chrome et bloqueront ou même ne pas publier votre extension. Tous les scripts doivent être dans l'extension. Mais il y a une solution, de Google Chrome Doc :
La restriction contre les ressources chargées sur HTTP s'applique uniquement à ces ressources qui sont directement exécutées. Tu es toujours libre, pour exemple, pour fabriquer des connexions XMLHTTPReQuest à une origine que vous aimez; La stratégie par défaut ne limite pas Connect-SRC ou l'un des autres Directives CSP de quelque manière que ce soit. P> blockQuote>
Si vous avez mal à une source externe, vous pouvez effectuer une requête HTTP XML et utiliser l'EVAL dans le contenu. Voici une partie du code de Google Doc : P>
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'"`,
Ce n'est pas vrai. Voir le didacticiel officiel d'extension chromé qui chargez Google Analytics via la balise de script: développeur.chrome.com/extensions/tut_analytics < / a>
Selon la discussion ici: https: //groups.google.com/a/chromium.org/forum/#!topic/chromium-extensions/lih7lgXeqho ,
Les scripts en cours d'exécution des sources externes peuvent faire valoir votre extension ou bloquée. P> blockQuote>
Il suffit de fournir une autre approche, vous pouvez apporter un appel AJAX au script de contenu, puis appelle
chrome.tabs.execscript code> p>
xxx pré> p>
Impossible de télécharger et d'exécuter un script être considéré comme exécuter des scripts à partir de sources externes code>? Est-ce autorisé par Google?
L'option "Fichier" pour ExestéScript concerne uniquement les fichiers Je pense que j'ai répondu des parties de cette question avant ici: Pourquoi chrome est-il .TAB.Executscript () nécessaire pour modifier le site Web actuel DOM et comment puis-je utiliser JQuery pour obtenir le même effet? P> à résumer: p> 1) dans l'ordre Pour avoir accès aux pages Web à partir de l'extension, vous devez ajouter Autorisations pour cela: P> chrome.tabs.executeScript(tab.id, {
code : 'var script=document.createElement(\'script\');' +
'script.onload=function() { /*do something in the page after the script was loaded*/ };' +
'script.src=\'http://127.0.0.1:8000/static/plugin/somesite.js\';' +
'document.body.appendChild(script);'
}, function (returnedValue) {
// do something in the extension context after the code was executed
});
Mais cela ne fonctionnera pas comme code de poste. Il fonctionnera comme la page JavaScript.
Remarque (non liée à votre erreur):
"http: // * /" code> correspond uniquement à des pages de niveau supérieur. Vous pouvez souhaiter soit
"" code> pour une large autorisation ou
"activetab" code> si vous n'avez besoin que d'accéder à l'onglet en cours.
Y a-t-il une raison pour laquelle vous ne pouvez pas avoir
somesite.js code> chargé dans votre extension?
Pour attraper LasterRor, voir Stackoverflow.com/a/45603880/632951