que pwa how extension create chrome json google-chrome-extension

json - pwa - Manifiesto de extensión de Chrome ''coincidencias''



manifest.json que es (6)

Estoy intentando con mis manos una simple extensión de Chrome, pero estoy teniendo problemas para proporcionar un valor para la matriz de matches en mis 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"] } }

Cuando intento cargar esta extensión en Chrome, aparece el siguiente mensaje:

No se pudo cargar la extensión desde ''C: / Users / foo / Desktop / Extensions / bar''.
Valor no válido para ''content_scripts''.

Sin embargo, no puedo ver lo que es "inválido" sobre mi valor. Lo que trato de hacer es hacer coincidir todas las URL, por lo que mi extensión puede manipular el DOM (a través de javascript dentro de scripts.js ) de cualquier página en la que se scripts.js . ¿Me estoy perdiendo algo, todo esto va mal, o qué?

actualizar

Después de publicar esta pregunta, me di cuenta de que el ejemplo de Google era ligeramente diferente al mío, así que modifiqué un poco mi código para reflejar su sintaxis:

"content_scripts": [{ "matches": ["http://*"], "js": ["scripts.js"] }]

Dicho esto, sigo recibiendo el siguiente error al intentar cargar mi extensión:

No se pudo cargar la extensión desde ''C: / Users / foo / Desktop / Extensions / bar''.
Valor no válido para ''content_scripts [0] .matches [0]''.


"manifest_version": 2

Sí, esto es obligatorio.


Bro, olvidaste agregar

"manifest_version": 2

Que es obligatorio.


Cualquier patrón de coincidencia debe ser de la siguiente estructura [esquema] : // [host] [ruta]

  1. esquema es ''*'' | ''http'' | ''https'' | ''archivo'' | ''ftp''
  2. host es '' '' | '''' . (cualquier char excepto ''/'' y ''*'') +
  3. la ruta es ''/'' (cualquier carácter)

Para hacer coincidir cualquier HTTP / S y URL de ARCHIVO use:

"matches": [ "*://*/*", "file://*/*" ],

Ref: https://developer.chrome.com/apps/match_patterns

Por cierto, para permitir el acceso a los archivos locales, agregue el permiso:

"permissions": [ "file://*/*" ]

O apruebe el acceso al archivo en la página de configuración de la extensión.


Debe rodear el valor del campo content_scripts entre corchetes:

"content_scripts": [ { "matches": ["http://*"], "js": ["scripts.js"] } ]

(mira los Documentos de Chrome para más información)

Dicho sea de paso, el uso de http://*/* sería una mejor coincidencia para todas las direcciones URL (consulte los docs ), agregando https://*/* si también necesita coincidir con esas.

Editar:

Después de su edición, el error que está recibiendo se debe a que el patrón de coincidencia es incorrecto.


Para muchos que están recibiendo errores que involucran:

''content_scripts[0].matches'' is missing or invalid.

o

''content_scripts[0].matches[0]'': Empty path.

Intenta completar o crear el campo de coincidencias con su URL específica necesaria. Si desea utilizar todas las URL, utilice la etiqueta <all_urls> como se muestra a continuación.

"content_scripts": [ { "matches": ["<all_urls>"], "js": [ "jquery.js" ] } ]

Los archivos enumerados en la matriz "js" tienen su ruta relativa a su aplicación. En otras palabras, la ubicación de "manifest.json" es su directorio raíz.

Nota: jquery.js es un archivo en el directorio de mi proyecto y debe reemplazarlo con el archivo de script que desee.


Si quiere hacer coincidir cada URL, Google tiene un patrón especial solo para este propósito: <all_urls>

Uso de muestra:

"matches": ["<all_urls>"],

Consulte esta página para obtener más información: docs