Tengo una extensión de Chrome simple que usa la función de secuencia de comandos de contenido para modificar un sitio web. Más concretamente, el background-image
de dicho sitio web.
Por alguna razón, parece que no puedo usar imágenes locales, a pesar de que están empaquetadas en la extensión.
body {
background: #000 url('image.jpg') !important;
background-repeat: repeat !important;
}
Eso es todo, el CSS más simple ... pero no funcionará. El navegador no carga la imagen.
css
google-chrome-extension
background-image
Bjarki Jonasson
fuente
fuente
Respuestas:
La URL de tu imagen debería verse así
chrome-extension://<EXTENSION_ID>/image.jpg
Sería mejor reemplazar css a través de javascript. De los documentos :
fuente
Chrome tiene soporte i18n que brinda la capacidad de hacer referencia a su extensión en su CSS. Mantengo mis imágenes en una carpeta de imágenes en la extensión, así que haga referencia a los activos en el CSS así:
fuente
Hay muchas respuestas y soluciones antiguas para esta pregunta.
En agosto de 2015 (utilizando Chrome 45 y Manifest versión 2), la "práctica recomendada" actual para vincular imágenes locales dentro de las extensiones de Chrome es el siguiente enfoque.
1) Enlace al activo en su CSS usando una ruta relativa a la carpeta de imágenes de su extensión:
2) Agregue el activo individual a la sección web_accessible_resources del archivo manifest.json de su extensión :
Nota: este método es adecuado para algunos archivos, pero no se adapta bien a muchos archivos.
En cambio, un mejor método es aprovechar el soporte de Chrome para patrones de coincidencia para incluir en la lista blanca todos los archivos dentro de un directorio determinado:
El uso de este enfoque le permitirá utilizar imágenes de forma rápida y sin esfuerzo en el archivo CSS de su extensión de Chrome utilizando métodos compatibles de forma nativa.
fuente
Una opción sería convertir su imagen a base64:
y luego ponga los datos directamente en su css como:
Si bien es posible que este no sea un enfoque que le gustaría utilizar al desarrollar regularmente una página web , es una excelente opción debido a algunas de las limitaciones de la creación de una extensión de Chrome.
fuente
Mi solución.
Con Menifest v2, debe agregarlo
web_accessible_resources
al archivo y luego usarlochrome-extension://__MSG_@@extension_id__/images/pattern.png
como URL en su archivo css.CSS:
Manifest.json
ps Su manifest.json puede verse diferente a este.
fuente
Esta versión de CSS solo funciona en el entorno de extensión (página de la aplicación, página emergente, página de fondo, página de opciones) , así como en el archivo CSS content_scripts.
En el archivo .less, siempre establezco una variable al principio:
Luego, más tarde, si desea hacer referencia a imágenes similares a extension-local-resource, use:
fuente
Una cosa a mencionar es que en web_accessible_resources puede usar comodines. Entonces en lugar de
"images / pattern.png"
Puedes usar
"imágenes / *"
fuente
Solo para aclarar, de acuerdo con la documentación , todos los archivos de una extensión también son accesibles mediante una URL absoluta como esta:
Tenga en cuenta que
<extensionID>
es un identificador único que genera el sistema de extensión para cada extensión. Puede ver los ID de todas sus extensiones cargadas yendo a la URL chrome: // extensions . los<pathToFile>
es la ubicación del archivo en la carpeta superior de la extensión; es lo mismo que la URL relativa....
Cambiar la imagen de fondo en CSS:
Cambiar la imagen de fondo en CSS a través de JavaScript:
Cambiar la imagen de fondo en CSS a través de jQuery:
fuente