J'essaie d'utiliser une simple extension Chrome, mais je ne parviens pas à fournir une valeur pour le tableau matches
dans mon content_scripts
.
{
"name": "My Extension",
"version": "1.0",
"description": "My Extension Experiment",
"browser_action": {
"default_icon": "icon.png",
"default_title": "Ext",
"default_popup": "popup.html"
},
"content_scripts": {
"matches": ["http://*"],
"js": ["scripts.js"]
}
}
Lorsque j'essaie de charger cette extension dans Chrome, le message suivant s'affiche:
Impossible de charger l'extension à partir de 'C:\Users\foo\Desktop\Extensions\bar'.
Valeur non valide pour 'content_scripts'.
Je ne peux pas voir ce qui est "invalide" à propos de ma valeur cependant. Ce que j'essaie de faire, c'est de faire correspondre toutes les URL, afin que mon extension puisse manipuler le DOM (via javascript dans scripts.js
) de toute page sur laquelle il est exécuté. Est-ce que je rate quelque chose, que je me trompe ou quoi?
mettre à jour
Après avoir posté cette question, j'ai remarqué que l'exemple de Google était légèrement différent du mien. J'ai donc modifié un peu mon code pour refléter leur syntaxe:
"content_scripts": [{
"matches": ["http://*"],
"js": ["scripts.js"]
}]
Cela étant dit, j'obtiens toujours l'erreur suivante lorsque j'essaie de charger mon extension:
Impossible de charger l'extension à partir de 'C:\Users\foo\Desktop\Extensions\bar'.
Valeur non valide pour 'content_scripts [0] .matches [0]'.
Vous devez entourer la valeur du champ content_scripts
entre crochets:
"content_scripts": [ {
"matches": ["http://*"],
"js": ["scripts.js"]
} ]
(voir le Chrome Docs pour plus d'informations)
Incidemment, utiliser http://*/*
conviendrait mieux pour toutes les URL (voir le docs ), en ajoutant https://*/*
si vous devez également les faire correspondre.
Modifier:
Suite à votre modification, l'erreur que vous obtenez est due au fait que le modèle de correspondance est incorrect.
Si vous souhaitez faire correspondre toutes les URL, Google utilise un modèle spécial à cette fin: <all_urls>
Exemple d'utilisation:
"matches": ["<all_urls>"],
Voir cette page pour plus d’informations: https://developer.chrome.com/extensions/match_patterns
Pour beaucoup de ceux qui obtiennent des erreurs impliquant:
'content_scripts[0].matches' is missing or invalid.
ou
'content_scripts[0].matches[0]': Empty path.
Essayez de remplir ou de créer, le champ de correspondance avec votre URL spécifique nécessaire . Si vous souhaitez utiliser toutes les URL, utilisez la balise <all_urls>
comme ci-dessous.
"content_scripts": [
{
"matches": ["<all_urls>"],
"js": [ "jquery.js" ]
}
]
Les fichiers répertoriés dans le tableau "js" ont leur chemin relatif à votre application. .__ En d'autres termes, l'emplacement de "manifest.json" est votre répertoire racine.
Remarque: jquery.js est un fichier situé dans le répertoire de mon projet et vous devez le remplacer par le fichier de script souhaité.
Tout modèle de correspondance doit avoir la structure suivante [schéma] : // [hôte] [chemin]
Pour faire correspondre les URL HTTP/S et FILE, utilisez:
"matches": [
"*://*/*",
"file://*/*"
],
Réf.: https://developer.chrome.com/apps/match_patterns
À propos, pour autoriser l'accès aux fichiers locaux - ajoutez l'autorisation:
"permissions": [
"file://*/*"
]
Ou approuvez l'accès au fichier sur la page des paramètres d'extension.