Google Chrome Extension – Script Injections

J'essaie d'obtenir mon extension Chrome pour injecter un javascript avec les content_scripts de content_scripts , en utilisant cette réponse précédente comme référence.

Manifest.json

 "name": "My Chrome Extension", "version": "1.0", "manifest_version": 2, "content_scripts": [{ "matches": ["http://pagetoinject/script/into/*"], "js": ["contentscript.js"] }] 

Contenscript.js:

 var s = document.createElement('script'); s.src = chrome.extension.getURL("script.js"); (document.head||document.documentElement).appendChild(s); s.parentNode.removeChild(s); 

(A également essayé cette méthode sans succès).

 var s = document.createElement('script'); s.src = chrome.extension.getURL("script.js"); s.onload = function() { this.parentNode.removeChild(this); }; (document.head||document.documentElement).appendChild(s); 

Je continue d'obtenir cette erreur javascript. Voici une capture d'écran .

Entrez la description de l'image ici GET chrome-extension://invalid/ (anonymous function)

  1. Dans votre fichier manifeste, "manifest_version": 2 est spécifié. Cela active automatiquement un mode plus strict, dans lequel tous les fichiers de l'extension ne sont pas disponibles pour les pages Web par défaut.
  2. Votre code d'origine ne fonctionnerait jamais, car l'élément <script> est immédiatement supprimé après l'injection (le fichier de script n'a pas la possibilité de charger).

À la suite de 1., l'erreur suivante apparaît dans la console:

 Failed to load resource chrome-extension://invalid/ 

Pour corriger le problème, ajoutez script.js à la liste blanche, "web_accessible_resources" dans votre manifest file :

  {
   "Nom": "extension Chrome",
   "Version": "1.0",
   "Manifest_version": 2,
   "Content_scripts": [{
       "Matches": ["http: // pagetoinject / script / into / *"],
       "Js": ["contentscript.js"]
   }] 
    "Web_accessible_resources": ["script.js"]
 } 

Le problème ici est que vous utilisez la version manifest_version : 2 . Si vous faites cette manifest-version: 1 vous n'aurez aucun problème. La version 2 limite certaines de ces fonctionnalités pour améliorer la sécurité. Reportez-vous à la Politique de sécurité de contenu Google pour plus de détails sur les restrictions imposées dans la version manifeste 2. Je n'ai pas trouvé votre cas spécifique mentionné dans le CSP, mais lorsque j'ai changé la version du manifeste à 1 et que j'ai exécuté votre code, cela fonctionne bien.