2012-04-17 18 views
7

Quiero ejecutar un script de contenido en un iframe con chrome-extension: // URL. He añadido una línea a mi manifest.json que he copiado de la documentación http://code.google.com/chrome/extensions/match_patterns.html¿Content_scripts coincide con el trabajo "chrome-extension: // */*"?

chrome-extension://*/* 

Pero cuando vuelvo a cargar mi extensión consigo una alerta:

Could not load extension from '/work/sirius/extension'. 
Invalid value for 'content_scripts[2].matches[0]': Invalid scheme. 

alguna idea de cómo conseguir que esto funcione ?

+0

Como se indica en la respuesta de @Konstantin Smolyanin a continuación, la documentación ahora no dice nada acerca de la capacidad de insertar scripts de contenido en las páginas 'chrome-extension:'. –

Respuesta

7

No. Solo ftp:, file:, http: y https: pueden coincidir con una declaración de script de contenido.

Los patrones de URL no válidos en cualquiera de los campos matches y exclude_matches se rechazan (generando un error al intentar cargar la extensión).

Los patrones no válidos en permissions option in the manifest file se ignoran.

Si desea ejecutar un script en una pestaña desde su extensión, use chrome.extension.getViews en su script de fondo. Mejor aún, diseñe las páginas de su extensión de modo que effectively communicate with each other(example).

+0

Quiero ejecutar un script de contenido en un iframe en una página web. chrome.extension.getViews() permite scripts en extensiones, no en páginas web. – johnjbarton

+0

Estoy implementando un mecanismo de comunicaciones basado en postMessage para el iframe, pero el iframe no es mi código. Así que quiero que los content_scripts me permitan inyectar el punto final postMesssage(). – johnjbarton

+0

El enlace de arriba a la opción de 'permisos en el archivo de manifiesto' me llevó a investigar usando la inyección de script programática. Desafortunadamente, esto tampoco funcionará: la aplicación web que aloja la extensión chrome: // iframe no puede ejecutar el código de extensión requerido para inyectar en su iframe. Tal vez pueda escribir una extensión separada para inyectar programáticamente cuando la pestaña tenga una URL coincidente. – johnjbarton

8

Estoy teniendo exactamente el mismo problema, mira la API http://code.google.com/chrome/extensions/match_patterns.html, dice claramente que aceptan chrome-extension://*/* pero no es así.

Necesitan actualizar la API para no confundir a las personas.

+2

Existe un problema abierto para corregir la documentación: http://code.google.com/p/chromium/ issues/detail? id = 153245 – rsanchez

+1

Como @Konstantin Smolyanin responde a continuación, la documentación ha sido actualizada. –

5

Parece que los autores de Chrome han eliminado silenciosamente la capacidad de los scripts de contenido para ser inyectados en las páginas chrome-extension:. Documentation todavía dice que funciona e incluso contiene ejemplos con chrome-extension: esquema, pero en realidad no funciona. Así que ahora solo http:, https: y ftp: funcionan "desde la caja" y file: pueden funcionar si el usuario de su extensión ha habilitado esto en la página Extensiones (chrome: // extensions /).

Actualización: ahora la documentación mencionada anteriormente se ha actualizado y no dice nada acerca de la capacidad de insertar scripts de contenido en las páginas chrome-extension:.

Cuestiones relacionadas