J'essaie d'obtenir que mon extension Chrome injecte du code JavaScript avec content_scripts
, en utilisant ce précédent answer comme référence.
"name": "My Chrome Extension",
"version": "1.0",
"manifest_version": 2,
"content_scripts": [{
"matches": ["http://pagetoinject/script/into/*"],
"js": ["contentscript.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é this 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 à obtenir cette erreur javascript. Voici un capture d'écran .
GET chrome-extension://invalid/
(anonymous function)
"manifest_version": 2
est spécifié. Cela active automatiquement un mode plus strict, dans lequel tous les fichiers d'extension ne sont pas disponibles par défaut pour les pages Web.<script>
est immédiatement supprimé après l'injection (le fichier de script n'a pas la chance d'être chargé).À la suite de 1., l'erreur suivante apparaît dans la console:
Failed to load resource chrome-extension://invalid/
Pour résoudre le problème, ajoutez script.js
à la liste blanche, "web_accessible_resources"
dans votre manifest file
:
{ "nom": "Extension Chrome", "version": "1.0", "manifeste_version": 2, "content_scripts": [{ "correspond": ["http: // pagetoinject/script/dans/*"], "js": ["contentscript.js"] }], "ressources_accessibles_Web": ["script.js"] }
En plus des réponses ci-dessus, je remarque que, dans votre contentscript.js
, vous ajoutez simplement un autre script. I.e script.js
Pourquoi ne pas directement ajouter script.js
à travers content_scripts dans manifest.json
.
Une autre raison pour obtenir cette erreur est si l'URL est bloquée par CORS. Vérifiez l'en-tête de requête réseau de la page pour voir si elle contient Content-Security-Policy:
Content-Security-Policy: default-src 'self' http://example.com; connect-src http://example.com/; script-src http://example.com/
Vous pouvez essayer d'ouvrir l'URL dans un nouvel onglet de navigateur pour vérifier que l'URL de l'image est correcte:
chrome-extension://mjcbjlencnokpknflpneebajalcnnifo/images/pattern.jpg
Une solution consiste à utiliser un URI de données d'image:
data:image/gif;base64,R0lGODlhEAAQAMQAAORHHOVSKudfOulrSOp3WOyDZu6QdvCchPGolfO0o/XBs/fNwfjZ0frl3/zy7////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAkAABAALAAAAAAQABAAAAVVICSOZGlCQAosJ6mu7fiyZeKqNKToQGDsM8hBADgUXoGAiqhSvp5QAnQKGIgUhwFUYLCVDFCrKUE1lBavAViFIDlTImbKC5Gm2hB0SlBCBMQiB0UjIQA7