Google Chrome Extension - Script Injections
Que j'essaie de faire mon Extension Chrome pour injecter un peu de javascript avec content_scripts
, à l'aide de cette précédente réponse comme une référence.
manifeste.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);
( é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 reçois cette erreur javascript. Voici un capture d'écran.
GET chrome-extension://invalid/
(anonymous function)
- Pas sûr de ce qui se passe, mais pourquoi ne faites-vous pas ceci à la place:
"js": ["contentscript.js","script.js"]
- Parce que
content_scripts
sont exécutées dans un environnement isolé. J'ai besoin d'injecter de l'script.js
dans les DOM afin que je puisse utiliser ce fichier comme si c'était une partie du public dossier js. C'est expliqué dans la première section de la cette réponse - Cette réponse est-ce que vous êtes en train dans le contenu du script. Il pourrait être ce que vous cherchez.
Vous devez vous connecter pour publier un commentaire.
"manifest_version": 2
est spécifié. Cela active automatiquement une plus strictes de la mode, dans lequel toutes les extension des fichiers ne sont pas disponibles à des pages web par défaut.<script>
élément est retiré immédiatement après l'injection (le fichier de script n'ont pas la chance de charge).Comme un résultat de 1., l'erreur suivante s'affiche dans la console:
Pour résoudre le problème, ajouter
script.js
à la liste blanche,"web_accessible_resources"
dans votremanifest file
:Outre les réponses ci-dessus, je remarque que dans votre
contentscript.js
vous êtes juste ajouter un autre script que j'ai.escript.js
Pourquoi ne pas ajouter directementscript.js
par content_scripts dansmanifest.json
.Une autre raison pour obtenir cette erreur si l'url est bloquée par la SCRO. Vérifiez la demande du réseau de l'en-tête de la page pour voir si elle contient du Contenu de la Politique de Sécurité:
Vous pouvez essayer d'ouvrir l'url dans un nouvel onglet de navigateur pour vérifier l'url de l'image est correcte:
Une façon de contourner cela est d'utiliser une image de données d'URI:
Le problème ici est que vous utilisez
manifest_version : 2
. Si vous faites cemanifest-version: 1
vous n'aurez pas tous les problèmes. La Version 2 limite de nombreuses fonctionnalités pour améliorer la sécurité. Reportez-vous Google Contenu De La Politique De Sécurité pour plus de détails sur les restrictions imposées dans le manifeste de la version 2. Je ne pouvais pas trouver votre cas particulier mentionné dans le CSP, mais quand j'ai changé la version du manifeste de 1 et exécuté votre code il fonctionne très bien.