2012-07-19 16 views
26

Estoy tratando de inyectar mi CSS desde JavaScript que se inyecta como un script contenido:Cómo inyectar CSS utilizando el archivo de script de contenido en la extensión de Chrome?

"content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "js": ["script.js"] 
    } 
], 

He encontrado similar question sobre la inyección de CSS, pero me encontré con un problema al utilizar el código de accepted answer. Aquí está mi script.js contenidos:

var link = document.createElement("link"); 
link.href = chrome.extension.getURL("style.css"); 
link.type = "text/css"; 
link.rel = "stylesheet"; 
document.getElementsByTagName("head")[0].appendChild(link); 

Después de cargar alguna página aparece este mensaje en la consola:

Negar la carga de cromo-extensión: //phkgaaiaakklogbhkdnpjncedlbamani/fix.css. Los recursos se deben enumerar en la clave de manifiesto de web_accessible_resources en orden para ser cargados por páginas fuera de la extensión.

¿Hay alguna manera de arreglar esto? O, tal vez, ¿alguna otra forma de inyectar un CSS de ese archivo JavaScript?

Nota: No puedo incluir la hoja de estilos directamente desde el manifiesto.

Respuesta

45

Puede agregar al campo de permisos del manifiesto; Ver web_accessible_resources. Por lo tanto, deberá añadir esto a la manifiesta:

, "web_accessible_resources": [ 
     "fix.css" 
    ] 

Ver también "Programmatic injection". y insertCSS().

Para la mayoría de las aplicaciones, olvidar todo ese código createElement y sólo tiene que añadir el archivo CSS para el manifiesto:

"content_scripts": [ 
    { 
     "matches": ["http://www.google.com/*"], 
     "css":  ["fix.css"], 
     "js":   ["script.js"] 
    } 
], 

aunque entiendo que usted no quiere hacer eso en este caso exacta.

+0

Pero tengo que hacer algunas cosas relacionadas con esta hoja de estilo en JavaScript, por lo que no es una solución en mi caso. – Roman

+1

En realidad, el código que se muestra en la pregunta no generaría ese error, al menos en la última versión * de Chrome * (20). Algo falta, algo está faltando. ¿Es "fix.css" un archivo real? ¿Dónde está ubicado? Enlace al código de extensión completo. ¿Qué versión de Chrome estás usando? ... Agregar al agregar a los permisos del manifiesto debería funcionar sin consideración (el primer enlace). ¿Lo intentaste? –

+0

Aquí está el código fuente - [https://github.com/Tsukanov/CleanTube/tree/activation-feature](https://github.com/Tsukanov/CleanTube/tree/activation-feature). Lo probé en las versiones 20 y 22, obtuve el mismo resultado. Y no estoy seguro de qué agregar en manifiesto. – Roman

Cuestiones relacionadas